91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python文件相關操作和方法實例分析

發布時間:2022-08-01 16:30:47 來源:億速云 閱讀:123 作者:iii 欄目:開發技術

這篇文章主要介紹了Python文件相關操作和方法實例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python文件相關操作和方法實例分析文章都會有所收獲,下面我們一起來看看吧。

    前言:

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

    os.path

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

    路徑操作:

    Python文件相關操作和方法實例分析

    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')

    屬性操作:

    方法說明
    getatime(path)返回最近訪問時間(浮點型秒數)
    getmtime(path)返回最近文件修改時間
    getctime(path)返回文件創建時間
    getsize(path)返回文件大小,如果文件不存在就返回錯誤

    文件類型判斷:

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

    文件

    文件讀寫

    Python中讀寫文件非常簡單,只需通過open函數以合適的方式打開,然后即可操作。

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

    open()用于打開一個文件,并返回文件對象(打開失敗會拋出 OSError異常);文件對象不再使用時,一定要關閉(可用with語句保證自動關閉)。

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

    參數說明:

    • file: 文件路徑(相對或者絕對路徑)或文件句柄(interger)。

    • mode: 文件打開模式(默認是r)。

    • buffering: 設置緩沖(0:關閉緩沖;1:只對文本文件有效,設定行緩沖;其他:設定緩沖的字節數)。

    • encoding: 設置編解碼模式(只對文本模式有效,如’utf-8’)。

    • errors: 設定編解碼的報錯級別:

      • strict:默認,編解碼出錯時,拋出ValueError異常;

      • ignore:忽略編解碼錯誤(可能會丟失數據);

      • replace:使用替換標識(如’?')替代無效數據;

      • surrogateescape:使用私有區編碼(U+DC80 to U+DCFF)來替換錯誤字節;在處理未知編碼文件時有效;

      • xmlcharrefreplace:寫文件有效;錯誤字節被替換為XML字符(&#nnn;);

      • backslashreplace:使用Python’s backslashed escape sequences替換錯誤字節;

      • namereplace: 寫文件有效;錯誤字節被替換為\N{...}

    • newline: 文本文件有效,如何處理換行符

    • closefd: 使用文件句柄時,是否關閉;使用文件路徑時,必須為True;

    打開模式Mode(t:文本;b:二進制):

    Python文件相關操作和方法實例分析

    文件對象的操作函數:

    Python文件相關操作和方法實例分析

    文件刪除

    刪除文件可以:

    • os.remove()/os.unlink()

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

    文件復制移動

    復制文件:

    • shutil.copy(src, dst):把文件src復制到dst中指定的位置(若dst是文件,則該文件的內容將替換為src的內容;若dst是目錄,則src將被復制到該目錄中);

    • shutil.copy2():會保留文件的詳細信息;

    移動文件:

    • os.rename(src, dst):重命名文件;

    • shutil.move(src,dst):將文件移動到指定的位置。

    目錄

    創建目錄

    有多種創建目錄的方法:

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

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

    刪除目錄

    有以下刪除目錄的函數:

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

    rmdir在目錄不為空,則引發OSError異常。

    復制目錄

    • shutil.copytree()復制整個目錄及其子文件、目錄。

    • shutil.move(src,dst):將文件或目錄移動到指定的位置。

    • os.rename(src, dst):重命名文件或目錄;

      • Windows下,若dst存在則拋出FileExistsError異常;

      • Unix下,若src與dst不同時為文件或目錄會拋出IsADirectoryError/NotADirectoryError異常;重命名目錄時,若dst非空,則拋出OSError異常。 枚舉目錄

    枚舉目錄

    列表,可通過:

    • os.scandir():推薦方法;返回一個包含DirEntry迭代器;

    • pathlib.Path()對象的iterdir()方法:返回包含目錄對象的迭代器;

    • os.listdir():遺留方法;返回一個包含子文件(夾)名的列表;

    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()用于通過在目錄樹中游走輸出目錄中的文件名:
    os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

    • top:要開始遍歷的頂層目錄;

    • topdown:True,優先遍歷top目錄;False,優先遍歷子目錄;

    • onerror:當walk出錯時,調用的callable函數;

    • followlinks:是否遍歷軟連接;返回為一個三元組(root,dirs,files):

    • root:當前正在遍歷的這個文件夾(路徑)

    • dirs:當前目錄下所有目錄名列表;

    • files:當前目錄下所有文件名列表;

    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']

    文件名模式匹配

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

    Python文件相關操作和方法實例分析

    fnmatch

    nmatch模塊主要用于文件名稱的匹配,比簡單的字符串匹配更強大,但比正則表達式稍弱。

    Python文件相關操作和方法實例分析

    fnmatch支持使用如下幾個通配符:

    • *:可匹配0或多個任意字符。

    • ?:可匹配一個任意字符。

    • [字符序列]:可匹配字符序列中的任意字符;支持中畫線表示法,如 [a-c]表示a、b和c字符中任意一個。

    • [!字符序列]:可匹配不在字符序列中的任意字符。

    for name in os.listdir('/tmp'):
        if fnmatch.fnmatch(name, 'log-*.txt'):
            print(name)

    glob

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

    參數說明:

    • pathname:是要匹配的路徑pattern,可支持通配符* ? []

    • recursive:若為True,則pattern中的**會匹配零或多層目錄及子目錄。

    如獲取當前目錄及其子目錄下的所有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

    臨時文件與目錄

    tempfile模塊用于創建臨時文件和目錄(程序停止運行后會自動刪除這些臨時文件),創建位置依次為:

    • Windows下:C:\TEMPC:\TMP,當前目錄;

    • 其他系統:/tmp/var/tmp/usr/tmp,當前目錄;

    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))
    # 此處,目錄已被刪除

    關于“Python文件相關操作和方法實例分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Python文件相關操作和方法實例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    威远县| 高邑县| 文山县| 乌苏市| 镇江市| 池州市| 沽源县| 丘北县| 新乡县| 建平县| 江油市| 山东省| 安塞县| 都昌县| 景泰县| 柘荣县| 临洮县| 当阳市| 那曲县| 克山县| 光泽县| 宁津县| 德格县| 勐海县| 澄江县| 惠来县| 卢氏县| 白河县| 青川县| 资阳市| 榆社县| 加查县| 巩义市| 临猗县| 日喀则市| 册亨县| 资兴市| 驻马店市| 翁牛特旗| 开远市| 连云港市|