电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:7日期: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í)有個問題,當(dāng)文件被是被調(diào)用文件時__file__總是文件的絕對路徑;但當(dāng)文件是直接被執(zhí)行的文件時,__file__并不總是文件的絕對路徑,而是你執(zhí)行該文件時給python傳的路徑。比如你是python xxx/yyy.py形式執(zhí)行的,那么此時__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)用文件的文件路徑

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

import inspectdef be_call_fun(): # stack()返回的是調(diào)用棧列表。 frame_stack = inspect.stack() # 0是標(biāo)識當(dāng)前函數(shù)的棧,1是標(biāo)識上一層函數(shù)的棧,依此類推。 # 也就是這個數(shù)值不一定是1,要看你要獲取其文件路徑的函數(shù)在第幾層 caller_frame = frame_stack[1] caller_file_path = caller_frame.filename # 由于當(dāng)前調(diào)用函數(shù)和被調(diào)用函數(shù)放在同一個文件,所以文件名還是當(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文件時,shell所在的文件夾。

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

2.2 借助路徑獲取目錄

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

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

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

3.1 文件的常用操作

r--讀模式打開文件,如果文件不存在則報錯。r+--讀寫模式打開文件,如果文件不存在則報錯。寫時原有內(nèi)容不會被清空,而是被替換式覆蓋。w--寫模式打開文件,如果文件不存在則創(chuàng)建。已有內(nèi)容會被清空。w+--讀寫模式打開文件,如果文件不存在則創(chuàng)建。已有內(nèi)容會被清空。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,在父目錄不存在時會創(chuàng)建失敗os.mkdir(dir_name)# 創(chuàng)建目錄。此種形式是的于shell的mkdir -p,在父目錄不存在時會自動創(chuàng)建父文件夾os.makedirs(dir_name, exist_ok=True)# 刪除目錄。此種形式相當(dāng)于shell的rmdir,在目錄非空時刪除失敗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獲取文件路徑/目錄的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 世纪豪门官网 世纪豪门集成吊顶加盟电话 世纪豪门售后电话 | 学习安徽网 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 成都APP开发-成都App定制-成都app开发公司-【未来久】 | 粘度计,数显粘度计,指针旋转粘度计 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 临朐空调移机_空调维修「空调回收」临朐二手空调 | 培训一点通 - 合肥驾校 - 合肥新亚驾校 - 合肥八一驾校 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 致胜管家软件服务【在线免费体验】 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 西安中国国际旅行社(西安国旅) | 尾轮组_头轮组_矿用刮板_厢式刮板机_铸石刮板机厂家-双驰机械 | 钢结构厂房造价_钢结构厂房预算_轻钢结构厂房_山东三维钢结构公司 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 硬齿面减速机[型号全],ZQ减速机-淄博久增机械 | 湖北省煤炭供应链综合服务平台| 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶 |