【python进阶】_文件和目录操作
創(chuàng)建目錄
os.makedirs 可以遞歸的創(chuàng)建目錄結(jié)構(gòu),比如
import os os.makedirs('tmp/python/fileop',exist_ok=True)會(huì)在當(dāng)前工作目錄下面創(chuàng)建 tmp目錄,在tmp目錄下面再創(chuàng)建 python目錄,在Python目錄下面再創(chuàng)建fileop目錄。exist_ok=True?指定了,如果某個(gè)要?jiǎng)?chuàng)建的目錄已經(jīng)存在,也不報(bào)錯(cuò)。
刪除文件或目錄
os.remove 可以刪除一個(gè)文件,比如
os.remove('sdf.py')shutil.rmtree() 可以遞歸的刪除某個(gè)目錄所有的子目錄和子文件 比如
import shutil shutil.rmtree('tmp', ignore_errors=True)注意:參數(shù)?ignore_errors=True?保證如果目錄不為空,不會(huì)拋出異常。
拷貝文件
可以使用shutil模塊的copyfile函數(shù)。如果拷貝前,e:/first.py 已經(jīng)存在,則會(huì)被拷貝覆蓋,所以使用該函數(shù)一定要小心。
from shutil import copyfile# 拷貝 d:/tools/first.py 到 e:/first.py copyfile('d:/tools/first.py', 'e:/first.py')拷貝目錄
拷貝一個(gè)目錄里面所有的內(nèi)容(包括子目錄和文件、子目錄里面的子目錄和文件,等等)到另外一個(gè)目錄中,可以使用 shutil的copytree函數(shù)。
from shutil import copytree# 拷貝 d:/tools/aaa 目錄中所有的內(nèi)容 到 e:/bbb 中 copytree('d:/tools/aaa', 'e:/new/bbb')修改文件名、目錄名
要修改文件名、目錄名,可以使用os模塊的rename函數(shù)
import os# 修改目錄名 d:/tools/aaa 為 d:/tools/bbb os.rename('d:/tools/aaa','d:/tools/bbb')# 修改文件名 d:/tools/first.py 為 d:/tools/second.py os.rename('d:/tools/first.py','d:/tools/second.py')對(duì)文件路徑名的操作
對(duì)于文件名的操作,比如 獲取文件名稱,文件所在目錄,文件路徑的拼接等,都可以使用 os.path 模塊。通常我們喜歡使用格式化字符串的方法來(lái)做文件路徑的拼接,但是如果你的程序需要在Linux、Windows等多個(gè)平臺(tái)運(yùn)行,它們的路徑的分隔符是不同的,Windows上是?\?, 而 Linux上是?/。這時(shí),我們應(yīng)該使用 os.path 模塊。 它能夠自動(dòng)處理類似 Data/data.csv 和 Data\data.csv 這樣的文件路徑差異。
>>> import os >>> path = '/Users/beazley/Data/data.csv'>>> # 獲取路徑中的文件名部分 >>> os.path.basename(path) 'data.csv'>>> # 獲取路徑中的目錄部分 >>> os.path.dirname(path) '/Users/beazley/Data'>>> # 文件路徑的拼接 >>> os.path.join('tmp', 'data', os.path.basename(path)) 'tmp/data/data.csv'判斷文件、目錄是否存在
exists方法返回值為T(mén)rue表示 存在,否則表示不存在。
import os os.path.exists('d:/systems/cmd.exe') os.path.exists('d:/systems')總結(jié)
以上是生活随笔為你收集整理的【python进阶】_文件和目录操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【python进阶】_装饰器
- 下一篇: 在该系统上全局禁用了虚拟打印功能,不会为