最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python文件相關(guān)操作和方法匯總大全

 更新時(shí)間:2022年08月01日 15:05:23   作者:alwaysrun  
這篇文章主要介紹了Python文件相關(guān)操作和方法匯總大全,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言:

 Python中有多個(gè)內(nèi)置模塊來(lái)操作文件與目錄(os、os.path、shutil、pathlib等等)。

os.path

os.path模塊主要用于獲取文件的屬性,包含以下幾種常用方法:

路徑操作:

print(os.path.splitext('.info'))	# ('.info', '')
print(os.path.splitext('test.txt'))	# ('test', '.txt')
print(os.path.splitext(r'c:\tmp\test.txt'))	# ('c:\\tmp\\test', '.txt')

屬性操作:

方法說(shuō)明
getatime(path)返回最近訪(fǎng)問(wèn)時(shí)間(浮點(diǎn)型秒數(shù))
getmtime(path)返回最近文件修改時(shí)間
getctime(path)返回文件創(chuàng)建時(shí)間
getsize(path)返回文件大小,如果文件不存在就返回錯(cuò)誤

文件類(lèi)型判斷:

方法說(shuō)明
isfile(path)判斷路徑是否為文件
isdir(path)判斷路徑是否為目錄
islink(path)判斷路徑是否為鏈接
ismount(path)判斷路徑是否為掛載點(diǎn)

文件

文件讀寫(xiě)

Python中讀寫(xiě)文件非常簡(jiǎn)單,只需通過(guò)open函數(shù)以合適的方式打開(kāi),然后即可操作。

with open('data.txt', 'r', encoding='utf-8') as f:
    data = f.read()
    print('contents: {}'.format(data))

open()用于打開(kāi)一個(gè)文件,并返回文件對(duì)象(打開(kāi)失敗會(huì)拋出 OSError異常);文件對(duì)象不再使用時(shí),一定要關(guān)閉(可用with語(yǔ)句保證自動(dòng)關(guān)閉)。

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

參數(shù)說(shuō)明:

  • file: 文件路徑(相對(duì)或者絕對(duì)路徑)或文件句柄(interger)。
  • mode: 文件打開(kāi)模式(默認(rèn)是r)。
  • buffering: 設(shè)置緩沖(0:關(guān)閉緩沖;1:只對(duì)文本文件有效,設(shè)定行緩沖;其他:設(shè)定緩沖的字節(jié)數(shù))。
  • encoding: 設(shè)置編解碼模式(只對(duì)文本模式有效,如’utf-8’)。
  • errors: 設(shè)定編解碼的報(bào)錯(cuò)級(jí)別:
    • strict:默認(rèn),編解碼出錯(cuò)時(shí),拋出ValueError異常;
    • ignore:忽略編解碼錯(cuò)誤(可能會(huì)丟失數(shù)據(jù));
    • replace:使用替換標(biāo)識(shí)(如’?')替代無(wú)效數(shù)據(jù);
    • surrogateescape:使用私有區(qū)編碼(U+DC80 to U+DCFF)來(lái)替換錯(cuò)誤字節(jié);在處理未知編碼文件時(shí)有效;
    • xmlcharrefreplace:寫(xiě)文件有效;錯(cuò)誤字節(jié)被替換為XML字符(&#nnn;);
    • backslashreplace:使用Python’s backslashed escape sequences替換錯(cuò)誤字節(jié);
    • namereplace: 寫(xiě)文件有效;錯(cuò)誤字節(jié)被替換為\N{...};
  • newline: 文本文件有效,如何處理?yè)Q行符
  • closefd: 使用文件句柄時(shí),是否關(guān)閉;使用文件路徑時(shí),必須為T(mén)rue;

打開(kāi)模式Mode(t:文本;b:二進(jìn)制):

文件對(duì)象的操作函數(shù):

文件刪除

刪除文件可以:

  • os.remove()/os.unlink()
  • pathlib.Path.unlink()如果傳遞的不是文件,則會(huì)拋出OSError異常。

文件復(fù)制移動(dòng)

復(fù)制文件:

  • shutil.copy(src, dst):把文件src復(fù)制到dst中指定的位置(若dst是文件,則該文件的內(nèi)容將替換為src的內(nèi)容;若dst是目錄,則src將被復(fù)制到該目錄中);
  • shutil.copy2():會(huì)保留文件的詳細(xì)信息;

移動(dòng)文件:

  • os.rename(src, dst):重命名文件;
  • shutil.move(src,dst):將文件移動(dòng)到指定的位置。

目錄

創(chuàng)建目錄

有多種創(chuàng)建目錄的方法:

方法描述
os.mkdir()創(chuàng)建單個(gè)子目錄
os.makedirs()創(chuàng)建多次目錄,包括中間目錄
Pathlib.Path.mkdir()創(chuàng)建單個(gè)或多個(gè)目錄

os.makedirs(name, mode=0o777, exist_ok=False)
若目錄已存在,則拋出FileExistsError異常;
傳遞exist_ok=True,則目錄存在時(shí),不報(bào)錯(cuò)。

刪除目錄

有以下刪除目錄的函數(shù):

函數(shù)描述
os.rmdir()刪除一個(gè)空目錄
pathlib.Path.rmdir()刪除一個(gè)空目錄
shutil.rmtree()刪除完整的目錄樹(shù),可用于刪除非空目錄

rmdir在目錄不為空,則引發(fā)OSError異常。

復(fù)制目錄

  • shutil.copytree()復(fù)制整個(gè)目錄及其子文件、目錄。
  • shutil.move(src,dst):將文件或目錄移動(dòng)到指定的位置。
  • os.rename(src, dst):重命名文件或目錄;
    • Windows下,若dst存在則拋出FileExistsError異常;
    • Unix下,若src與dst不同時(shí)為文件或目錄會(huì)拋出IsADirectoryError/NotADirectoryError異常;重命名目錄時(shí),若dst非空,則拋出OSError異常。 枚舉目錄

枚舉目錄

列表,可通過(guò):

  • os.scandir():推薦方法;返回一個(gè)包含DirEntry迭代器;
  • pathlib.Path()對(duì)象的iterdir()方法:返回包含目錄對(duì)象的迭代器;
  • os.listdir():遺留方法;返回一個(gè)包含子文件(夾)名的列表;
with os.scandir('/tmp') as entries:
    for en in entries:
        if en.is_file():
            print(en.name)

DirEntry屬性與方法:

  • name:文件名
  • path:完整路徑名
  • is_dir():是文件夾,返回
  • True;is_file():是文件,返回
  • True;is_symlink():是symbolic link,返回True;
  • stat():返回文件屬性信息stat_result;

遍歷(游走)目錄

os.walk()用于通過(guò)在目錄樹(shù)中游走輸出目錄中的文件名:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

  • top:要開(kāi)始遍歷的頂層目錄;
  • topdown:True,優(yōu)先遍歷top目錄;False,優(yōu)先遍歷子目錄;
  • onerror:當(dāng)walk出錯(cuò)時(shí),調(diào)用的callable函數(shù);
  • followlinks:是否遍歷軟連接;返回為一個(gè)三元組(root,dirs,files):
  • root:當(dāng)前正在遍歷的這個(gè)文件夾(路徑)
  • dirs:當(dāng)前目錄下所有目錄名列表;
  • files:當(dāng)前目錄下所有文件名列表;
for root, dirs, files in os.walk(r"D:\temp"):
    print(root, files)

# D:\temp ['add.log', 'out.yml']
# D:\temp\picture ['1.jpeg']
# D:\temp\result\log ['1.log', '2.log']

文件名模式匹配

獲取目錄列表后,要搜索和特定的模式匹配的文件:

fnmatch

nmatch模塊主要用于文件名稱(chēng)的匹配,比簡(jiǎn)單的字符串匹配更強(qiáng)大,但比正則表達(dá)式稍弱。

fnmatch支持使用如下幾個(gè)通配符:

  • *:可匹配0或多個(gè)任意字符。
  • ?:可匹配一個(gè)任意字符。
  • [字符序列]:可匹配字符序列中的任意字符;支持中畫(huà)線(xiàn)表示法,如 [a-c]表示a、b和c字符中任意一個(gè)。
  • [!字符序列]:可匹配不在字符序列中的任意字符。
for name in os.listdir('/tmp'):
    if fnmatch.fnmatch(name, 'log-*.txt'):
        print(name)

glob

glob模塊中的glob()返回所有匹配的文件路徑列表;iglob()與glob基本相同,只是返回的是迭代器(非列表)。
glob.glob(pathname, *, recursive=False)

參數(shù)說(shuō)明:

  • pathname:是要匹配的路徑pattern,可支持通配符* ? []
  • recursive:若為T(mén)rue,則pattern中的**會(huì)匹配零或多層目錄及子目錄。

如獲取當(dāng)前目錄及其子目錄下的所有py文件:

# files = glob.iglob(r"D:\temp\**\*.log", recursive=True)
files = glob.iglob(r"**\*.py", recursive=True)
for f in files:
    print(f)

## 返回文件中包含匹配的路徑;
# log的返回為:
    # D:\temp\add.log
    # D:\temp\result\result.log
    # D:\temp\result\log\test2022.log
# py的返回為
    # main.py
    # files\file_handle.py

臨時(shí)文件與目錄

tempfile模塊用于創(chuàng)建臨時(shí)文件和目錄(程序停止運(yùn)行后會(huì)自動(dòng)刪除這些臨時(shí)文件),創(chuàng)建位置依次為:

  • Windows下:C:\TEMP,C:\TMP,當(dāng)前目錄;
  • 其他系統(tǒng):/tmp,/var/tmp,/usr/tmp,當(dāng)前目錄;
with tempfile.TemporaryFile('w+t') as fp:
   fp.write('Hello world!')
   fp.seek(0)
   fp.read()
# 此處,文件已被刪除

tmp = ''
with tempfile.TemporaryDirectory() as tmpdir:
    print('Created temporary directory ', tmpdir)
    tmp = tmpdir
    print(os.path.exists(tmpdir))
# 此處,目錄已被刪除

到此這篇關(guān)于Python文件相關(guān)操作和方法匯總大全的文章就介紹到這了,更多相關(guān)Python文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python調(diào)用c++返回帶成員指針的類(lèi)指針實(shí)例

    python調(diào)用c++返回帶成員指針的類(lèi)指針實(shí)例

    今天小編就為大家分享一篇python調(diào)用c++返回帶成員指針的類(lèi)指針實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 簡(jiǎn)單介紹Python的Django框架加載模版的方式

    簡(jiǎn)單介紹Python的Django框架加載模版的方式

    這篇文章主要介紹了Python的Django框架加載模版的方式,包括一些對(duì)加載順序的介紹,需要的朋友可以參考下
    2015-07-07
  • Python分支語(yǔ)句常見(jiàn)的使用方法

    Python分支語(yǔ)句常見(jiàn)的使用方法

    這篇文章主要介紹了Python分支語(yǔ)句常見(jiàn)的使用方法,Python分支語(yǔ)句,也稱(chēng)為選擇語(yǔ)句,體現(xiàn)了程序的選擇結(jié)構(gòu),即對(duì)應(yīng)不同的場(chǎng)景,選擇不同的處理方式,具體常見(jiàn)的用法需要的朋友可參考下面文章內(nèi)容
    2022-06-06
  • Python利用keyboard模塊實(shí)現(xiàn)鍵盤(pán)記錄操作

    Python利用keyboard模塊實(shí)現(xiàn)鍵盤(pán)記錄操作

    模擬鍵盤(pán)操作執(zhí)行自動(dòng)化任務(wù),我們常用的有pyautowin等自動(dòng)化操作模塊。今天介紹的這個(gè)模塊叫做keyboard,它是純Python原生開(kāi)發(fā),編譯時(shí)完全不需要依賴(lài)C語(yǔ)言模塊。一行命令就能完成安裝,非常方便,需要的可以了解一下
    2022-10-10
  • Pytorch獲取無(wú)梯度TorchTensor中的值

    Pytorch獲取無(wú)梯度TorchTensor中的值

    這篇文章主要介紹了Pytorch獲取無(wú)梯度TorchTensor中的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python3在各種服務(wù)器環(huán)境中安裝配置過(guò)程

    python3在各種服務(wù)器環(huán)境中安裝配置過(guò)程

    這篇文章主要介紹了python3在各種服務(wù)器環(huán)境中安裝配置過(guò)程,源碼包編譯安裝步驟詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 用Python解決x的n次方問(wèn)題

    用Python解決x的n次方問(wèn)題

    今天小編就為大家分享一篇用Python解決x的n次方問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 在pytorch中為Module和Tensor指定GPU的例子

    在pytorch中為Module和Tensor指定GPU的例子

    今天小編就為大家分享一篇在pytorch中為Module和Tensor指定GPU的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python Flask框架模板操作實(shí)例分析

    Python Flask框架模板操作實(shí)例分析

    這篇文章主要介紹了Python Flask框架模板操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python Flask框架使用Jinja2模板步驟及相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 在VSCode中配置Python開(kāi)發(fā)環(huán)境的詳細(xì)教程

    在VSCode中配置Python開(kāi)發(fā)環(huán)境的詳細(xì)教程

    Visual Studio Code(簡(jiǎn)稱(chēng)VSCode)以其強(qiáng)大的功能和靈活的擴(kuò)展性,成為了許多開(kāi)發(fā)者的首選,本文將詳細(xì)介紹如何在VSCode中配置Python開(kāi)發(fā)環(huán)境,需要的朋友可以參考下
    2025-04-04

最新評(píng)論

广西| 广汉市| 邵阳县| 斗六市| 友谊县| 方城县| 泽普县| 高要市| 桦甸市| 晴隆县| 茌平县| 长沙县| 怀来县| 新竹县| 吉首市| 临汾市| 壤塘县| 静海县| 平乐县| 本溪| 济宁市| 仲巴县| 江都市| 琼海市| 喀喇| 彰化市| 尚义县| 宽甸| 社会| 惠来县| 三亚市| 安陆市| 宜宾市| 靖远县| 游戏| 马边| 景谷| 洛南县| 墨玉县| 乌鲁木齐县| 孟州市|