欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從基礎(chǔ)到高階探索Python中的文件操作

 更新時(shí)間:2023年06月12日 10:31:16   作者:cy_x  
文件操作在Python編程中是不可或缺的一部分,在本篇博客中,我們將全面、深入地探討Python中的文件操作,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)

在本篇博客中,我們將全面、深入地探討Python中的文件操作。文件操作在Python編程中是不可或缺的一部分,它包含了打開、讀取、寫入和關(guān)閉文件等各種操作。我們將從基礎(chǔ)的文件操作講解到高級(jí)的文件處理技巧,以及如何優(yōu)雅地使用Python進(jìn)行文件操作。每一部分我們都會(huì)分享一些獨(dú)特的用法,并且附有具體的示例代碼和輸出結(jié)果。在文章的最后,我們還將分享一些鮮為人知但非常實(shí)用的文件操作技巧。

基礎(chǔ)文件操作:打開、讀取、寫入和關(guān)閉文件

Python使用內(nèi)置的open()函數(shù)來打開一個(gè)文件,它返回一個(gè)文件對(duì)象,常用的模式如下:'r'表示讀取,'w'表示寫入(會(huì)先清空原有文件),'a'表示追加,'b'表示二進(jìn)制模式。特別的,我們可以使用with關(guān)鍵字,這樣當(dāng)我們完成操作后,文件將自動(dòng)關(guān)閉。

# 以讀取模式打開一個(gè)文件
with open('file.txt', 'r') as file:
    content = file.read()
print(content)

當(dāng)你運(yùn)行這段代碼,假設(shè)file.txt的內(nèi)容是Hello, Python!,你會(huì)看到以下輸出:

Hello, Python!

文件讀取:細(xì)粒度控制

除了一次性讀取整個(gè)文件,我們還可以以更小的單位來讀取文件。這對(duì)于處理大文件時(shí)非常有用,可以有效控制內(nèi)存的使用。

with open('file.txt', 'r') as file:
    while True:
        line = file.readline()
        if not line:
            break
        print(line, end='')

這段代碼會(huì)逐行讀取file.txt文件的內(nèi)容并打印。其中,end=''是為了防止print函數(shù)在每次打印后都插入一個(gè)換行符,因?yàn)閺奈募凶x取的每一行都已經(jīng)帶有一個(gè)換行符。

文件寫入:內(nèi)容追加與覆蓋

我們使用寫入模式('w')或追加模式('a')來寫入文件。這里有一個(gè)小技巧:如果你的程序需要頻繁寫入文件,那么在寫入時(shí)使用\n來?yè)Q行會(huì)比使用write()函數(shù)后再使用write('\n')函數(shù)來插入新行更有效率。

with open('file.txt', 'a') as file:
    file.write('Hello, Python!\n')

這段代碼會(huì)在file.txt文件的末尾追加一行Hello, Python!。

更高級(jí)的文件處理:os和shutil模塊

Python的os模塊和shutil模塊為我們提供了更高級(jí)的文件操作功能,如重命名文件、刪除文件、創(chuàng)建

目錄、復(fù)制文件等。

import os
import shutil
# 創(chuàng)建一個(gè)新的目錄
os.mkdir('new_folder')
# 重命名文件
os.rename('old.txt', 'new.txt')
# 復(fù)制文件
shutil.copy2('src.txt', 'dst.txt')
# 刪除文件
os.remove('file_to_delete.txt')

運(yùn)行這段代碼會(huì)按順序執(zhí)行上述文件操作。

文件編碼:處理不同編碼格式的文件

在處理文件時(shí),我們可能會(huì)遇到各種不同的編碼格式,如UTF-8, ASCII, ISO-8859-1等。Python的open()函數(shù)允許我們通過encoding參數(shù)來指定文件的編碼方式。

with open('file.txt', 'r', encoding='utf-8') as file:
    content = file.read()
print(content)

如果你嘗試讀取一個(gè)包含非ASCII字符的文本文件,但沒有提供正確的編碼參數(shù),Python可能會(huì)拋出UnicodeDecodeError。在這種情況下,你需要知道文件的正確編碼格式才能正確地讀取文件。

# 嘗試讀取一個(gè)包含非ASCII字符的文件,但沒有指定正確的編碼格式
try:
    with open('file.txt', 'r') as file:
        content = file.read()
except UnicodeDecodeError:
    print("UnicodeDecodeError occurred!")

這段代碼會(huì)捕獲UnicodeDecodeError并打印一個(gè)錯(cuò)誤消息。

文件異常處理:確保代碼的健壯性

在文件操作中,我們可能會(huì)遇到各種異常情況,例如文件不存在、沒有讀取/寫入權(quán)限等。我們可以使用Python的異常處理機(jī)制來捕獲這些異常并作出相應(yīng)的處理。

try:
    with open('nonexistent_file.txt', 'r') as file:
        content = file.read()
except FileNotFoundError:
    print('File does not exist!')
except PermissionError:
    print('No permission to read the file!')

這段代碼會(huì)捕獲FileNotFoundErrorPermissionError,并分別打印出相應(yīng)的錯(cuò)誤消息。

使用pickle進(jìn)行對(duì)象序列化和反序列化

Python的pickle模塊提供了將對(duì)象轉(zhuǎn)換為一種可以存儲(chǔ)到文件或在網(wǎng)絡(luò)上傳輸?shù)母袷剑ㄟ@個(gè)過程稱為序列化),以及從這種格式重新構(gòu)造對(duì)象(這個(gè)過程稱為反序列化)的功能。這是一種非常方便的方式來保存和加載Python對(duì)象。

import pickle
data = {
    'name': 'John',
    'age': 30,
    'pets': ['cat', 'dog']
}
# 序列化并保存到文件
with open('data.pkl', 'wb') as file:
    pickle.dump(data, file)
# 從文件加載并反序列化
with open('data.pkl', 'rb') as file:
    loaded_data = pickle.load(file)
print(loaded_data)

運(yùn)行這段代碼,你會(huì)看到以下輸出:

{'name': 'John', 'age': 30, 'pets': ['cat', 'dog']}

這就是原始的data字典對(duì)象。

文件路徑處理

在處理文件路徑時(shí),Python的os.path模塊提供了一系列函數(shù)來解析、構(gòu)造和修改文件路徑。這些函數(shù)都是跨平臺(tái)的,因此無論你的程序運(yùn)行在Windows、macOS還是Linux上,都可以安全地使用它們。

import os
# 獲取文件的絕對(duì)路徑
abs_path = os.path.abspath('file.txt')
print(f'Absolute path: {abs_path}')
# 獲取文件所在的目錄
dir_name = os.path.dirname(abs_path)
print(f'Directory: {dir_name}')
# 獲取文件的基本名和擴(kuò)展名
base_name = os.path.basename(abs_path)
print(f'Base name: {base_name}')
root, ext = os.path.splitext(base_name)
print(f'Root: {root}, Extension: {ext}')

假設(shè)file.txt位于/home/user/documents/目錄下,運(yùn)行這段代碼會(huì)輸出:

Absolute path: /home/user/documents/file.txt
Directory: /home/user/documents
Base name: file.txt
Root: file, Extension: .txt

One More Thing: 文件遍歷和搜索

Python的os模塊提供了一個(gè)os.walk()函數(shù),這是一個(gè)簡(jiǎn)單易用但強(qiáng)大的工具,用于在目錄樹中生成文件名。結(jié)合fnmatch模塊,我們可以實(shí)現(xiàn)對(duì)文件的模式匹配搜索。

import os
import fnmatch
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in fnmatch.filter(files, pattern):
            result.append(os.path.join(root, name))
    return result
# 查找當(dāng)前目錄及其所有子目錄中的所有.txt文件
print(find('*.txt', '.'))

假設(shè)當(dāng)前目錄及其子目錄下有file1.txtfile2.txtsub/file3.txt三個(gè)文件,運(yùn)行這段代碼會(huì)輸出:

['./file1.txt', './file2.txt', './sub/file3.txt']

我們希望你能從這篇博客中學(xué)到Python文件操作的各種技巧,并能在你的Python編程之旅中發(fā)揮作用。

到此這篇關(guān)于從基礎(chǔ)到高階探索Python中的文件操作的文章就介紹到這了,更多相關(guān)Python文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python利用ffmpeg進(jìn)行錄制屏幕的方法

    python利用ffmpeg進(jìn)行錄制屏幕的方法

    今天小編就為大家分享一篇python利用ffmpeg進(jìn)行錄制屏幕的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python隨機(jī)生成均勻分布在單位圓內(nèi)的點(diǎn)代碼示例

    Python隨機(jī)生成均勻分布在單位圓內(nèi)的點(diǎn)代碼示例

    這篇文章主要介紹了Python隨機(jī)生成均勻分布在單位圓內(nèi)的點(diǎn)代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • python字符串中匹配數(shù)字的正則表達(dá)式

    python字符串中匹配數(shù)字的正則表達(dá)式

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。這篇文章主要介紹了python字符串中匹配數(shù)字的正則表達(dá)式 ,需要的朋友可以參考下
    2019-07-07
  • python用海龜繪圖寫貪吃蛇游戲

    python用海龜繪圖寫貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了python用海龜繪圖寫貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Django利用LogEntry生成歷史操作實(shí)戰(zhàn)記錄

    Django利用LogEntry生成歷史操作實(shí)戰(zhàn)記錄

    LogEntry是在后臺(tái)開發(fā)中經(jīng)常用到的模塊,它在admin是默認(rèn)開啟的。文中給大家介紹了在admin頁(yè)面上查看操作日志的方法及實(shí)戰(zhàn)代碼,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Python實(shí)現(xiàn)Windows上氣泡提醒效果的方法

    Python實(shí)現(xiàn)Windows上氣泡提醒效果的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)Windows上氣泡提醒效果的方法,涉及Python針對(duì)windows窗口操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Keras 使用 Lambda層詳解

    Keras 使用 Lambda層詳解

    這篇文章主要介紹了Keras 使用 Lambda層詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Django drf請(qǐng)求模塊源碼解析

    Django drf請(qǐng)求模塊源碼解析

    APIView中的dispatch是整個(gè)請(qǐng)求生命過程的核心方法,包含了請(qǐng)求模塊,權(quán)限驗(yàn)證,異常模塊和響應(yīng)模塊,我們先來介紹請(qǐng)求模塊,對(duì)Django drf請(qǐng)求模塊源碼相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06
  • 更新修改后的Python模塊方法

    更新修改后的Python模塊方法

    在本篇內(nèi)容中我們給大家整理了關(guān)于如何更新修改后的Python模塊的具體步驟和方法,有興趣的朋友們學(xué)習(xí)下。
    2019-03-03
  • python調(diào)用bash?shell腳本方法

    python調(diào)用bash?shell腳本方法

    這篇文章主要給大家分享了額python調(diào)用bash?shell腳本方法,os.system(command)、os.popen(command)等方法,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2021-12-12

最新評(píng)論