色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

Python如何獲取文件路徑/目錄

瀏覽:2日期:2022-07-10 13:52:50

一、獲取文件路徑實(shí)現(xiàn)

1.1 獲取當(dāng)前文件路徑

import oscurrent_file_path = __file__print(f'current_file_path: {current_file_path}')

__file__變量其實(shí)有個(gè)問題,當(dāng)文件被是被調(diào)用文件時(shí)__file__總是文件的絕對(duì)路徑;但當(dāng)文件是直接被執(zhí)行的文件時(shí),__file__并不總是文件的絕對(duì)路徑,而是你執(zhí)行該文件時(shí)給python傳的路徑。比如你是python xxx/yyy.py形式執(zhí)行的,那么此時(shí)__file__的值就是xxx/yyy.py。

可以使用以下更統(tǒng)一的方式獲取文件路徑:

import inspectcurrent_file_name = inspect.getfile(inspect.currentframe())print(f'current_file_name: {current_file_name}')

1.2 獲取調(diào)用文件的文件路徑

有時(shí)候我們想要獲取調(diào)用當(dāng)前文件的父文件的文件路徑,此時(shí)可以通過以下代碼實(shí)現(xiàn):

import inspectdef be_call_fun(): # stack()返回的是調(diào)用棧列表。 frame_stack = inspect.stack() # 0是標(biāo)識(shí)當(dāng)前函數(shù)的棧,1是標(biāo)識(shí)上一層函數(shù)的棧,依此類推。 # 也就是這個(gè)數(shù)值不一定是1,要看你要獲取其文件路徑的函數(shù)在第幾層 caller_frame = frame_stack[1] caller_file_path = caller_frame.filename # 由于當(dāng)前調(diào)用函數(shù)和被調(diào)用函數(shù)放在同一個(gè)文件,所以文件名還是當(dāng)前文件名 # 可將調(diào)用函數(shù)和被調(diào)用函數(shù)放到不同文件進(jìn)行觀察 print(f'caller_file_path: {caller_file_path}')def caller_fun(): be_call_fun()if __name__ == '__main__': caller_fun()

二、獲取目錄

2.1 獲取當(dāng)前工作目錄

所謂當(dāng)前工作目錄,就是你執(zhí)行python命令執(zhí)行python文件時(shí),shell所在的文件夾。

import oscurrent_working_dir = os.getcwd()print(f'current_working_dir: {current_working_dir}')

2.2 借助路徑獲取目錄

第一大節(jié)我們已經(jīng)借紹了幾種獲取文件路徑的方式,要獲取對(duì)應(yīng)的文件所處的文件夾,可直接借助這些路徑+os.path.dirname()實(shí)現(xiàn)。

import os# 文件絕對(duì)路徑current_file_path = __file__# 借助dirname()從絕對(duì)路徑中提取目錄current_file_dir = os.path.dirname(current_file_path)print(f'current_file_dir: {current_file_dir}')# 類似地可以借助basename()從絕對(duì)路徑中提取文件名# current_filename = os.path.basename(current_file_path)# 另外建議使用os.path.join()來實(shí)現(xiàn)路徑拼接,這樣不用自己再關(guān)注路徑分隔符的問題# 再有是os.path.join()參數(shù)并不一定要就是目錄+文件名形式,不管多少個(gè)參數(shù)都可以拼接# current_file_path = os.path.join(current_file_dir, current_filename)

三、文件和目錄的其他一些操作

3.1 文件的常用操作

r--讀模式打開文件,如果文件不存在則報(bào)錯(cuò)。r+--讀寫模式打開文件,如果文件不存在則報(bào)錯(cuò)。寫時(shí)原有內(nèi)容不會(huì)被清空,而是被替換式覆蓋。w--寫模式打開文件,如果文件不存在則創(chuàng)建。已有內(nèi)容會(huì)被清空。w+--讀寫模式打開文件,如果文件不存在則創(chuàng)建。已有內(nèi)容會(huì)被清空。a--追加模式打開文件,如果文件不存在則創(chuàng)建。a+--讀追加模式打開文件,如果文件不存在則創(chuàng)建。

import osfile_name = 'test.txt'new_file_name = 'new_test.txt'# 創(chuàng)建空白文件open(file_name, ’w’).close()# 刪除文件os.remove(file_name)# 重命名文件os.rename(file_name, new_file_name)# 讀文件with open(file_name, ’r’) as fd: # 讀取所有內(nèi)容 fd.read() # 讀取一行 fd.readline() # 讀取所有行,返回為各行組成的形表 fd.readlines()# 遍歷文件各行簡潔寫法for line in open(file_name, ’r’, encoding=’utf-8’): print(line)# 寫文件with open(file_name, ’w’) as fd: # 向文件寫入內(nèi)容,需要自行添加n fd.write('test_str') # 向文件寫入內(nèi)容,需要自行添加n # 和write的區(qū)別是,其參數(shù)除了可以是字符串,還可以是字符串列表 fd.writelines(['test_str', 'test_str'])

3.2 目錄的常用操作

import osdir_name = 'test_dir/dir_name'new_dir_name = 'test_dir/new_dir_name'# 創(chuàng)建目錄。此種形式是的于shell的mkdir,在父目錄不存在時(shí)會(huì)創(chuàng)建失敗os.mkdir(dir_name)# 創(chuàng)建目錄。此種形式是的于shell的mkdir -p,在父目錄不存在時(shí)會(huì)自動(dòng)創(chuàng)建父文件夾os.makedirs(dir_name, exist_ok=True)# 刪除目錄。此種形式相當(dāng)于shell的rmdir,在目錄非空時(shí)刪除失敗os.rmdir(dir_name)# 刪除目錄。此種形式相當(dāng)于shell的rm -rfimport shutilshutil.rmtree(dir_name)# 重命名目錄。os.rename(dir_name, new_dir_name)# 遍歷目錄# dir_path是當(dāng)前遍歷到的目錄。dir_names是dir_path下的文件夾列表。file_names是是dir_path下的文件列表# 如果想實(shí)現(xiàn)目錄白名單,將白名單目錄從dir_names中去除即可for (dir_path, dir_names, file_names) in os.walk(dir_name): for file_name in file_names: print(os.path.join(dir_path, file_name))

以上就是Python如何獲取文件路徑/目錄的詳細(xì)內(nèi)容,更多關(guān)于Python獲取文件路徑/目錄的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 欧美在线一级精品 | 国内一级特黄女人精品片 | 久久亚洲国产成人影院 | 国产精品yjizz视频网一二区 | 男女福利社 | 国产精品毛片久久久久久久 | 欧美在线 | 欧美 | 成人韩免费网站 | 国内精品亚洲 | 超级乱淫视频aⅴ播放视频 超级碰碰碰在线观看 | 欧美片网站免费 | 国产视频久久久久 | 日本精品在线观看 | 国产精品久久久久久免费播放 | rion美乳弹出来四虎在线观看 | 久久综合网址 | 国产精品无圣光一区二区 | 日韩国产免费一区二区三区 | 欧美最黄视频 | 国产片网站 | 欧美日韩亚洲国产 | 天天视频一区二区三区 | 各种偷拍盗摄视频在线观看 | 欧美另类 videos黑人极品 | 日本高清视频在线观看 | 国产一级视频在线观看 | 欧美另类69xxxxx视频 | 国产一级二级三级毛片 | 天天看片欧美 | 日韩精品在线一区 | 亚洲精品一二三四区 | 中文字幕一区二区小泽玛利亚 | 国产精品欧美亚洲日本综合 | 国产精品深爱在线 | 女人抠逼视频 | 9久久99久久久精品齐齐综合色圆 | 久久毛片网站 | 欧美深夜影院 | 成人免费一区二区三区在线观看 | 亚洲人成在线观看 | 亚洲一区二区三区香蕉 |