CodeGym /課程 /Python SELF TW /在磁碟上工作檔案

在磁碟上工作檔案

Python SELF TW
等級 21 , 課堂 5
開放

6.1 檔案操作

Python 提供了很多內建函數和模組來處理檔案和目錄。主要的操作是使用 內建模組 osshutil 以及其他。

檔案的三個主要操作:

  • 複製
  • 移動
  • 刪除

要執行這些操作,shutil 模組非常適合。

檔案複製


import shutil

shutil.copy('source.txt', 'destination.txt')
        

檔案移動


import shutil

shutil.move('source.txt', 'destination.txt')
        

檔案刪除


import os

os.remove('example.txt')
        

比以往任何時候都容易。

6.2 檢查檔案是否存在

常常需要檢查某個檔案是否存在。為此,模組 os 提供了專門的方法 — exists()

檢查檔案是否存在


import os

if os.path.exists('example.txt'):
    print("File exists")
else:
    print("File does not exist")
    # 如果檔案不存在,程式會執行 else 區塊中的動作。
    # 例如,可以顯示警告,創建新檔案或退出程式。

        

如果檔案不存在,程式可以通過條件來處理,或者引發異常。

6.3 檢查物件類型:檔案或目錄

常常需要檢查某個物件是檔案還是目錄。例如,當你讀取某個目錄中的所有內容時,檔案需要一一處理,而目錄則需要另一種處理方式。

對於這種情況,有兩個專門的方法 — isdir(),它檢查物件是否為目錄,isfile(),它檢查物件是否為檔案。

檢查是否為目錄


if os.path.isdir('example_directory'):
    print("這是目錄")
else:
    print("這不是目錄")
        

檢查是否為檔案


if os.path.isfile('example_file'):
    print("這是檔案")
else:
    print("這不是檔案")
        

這些是非常有用的功能,使用頻率超乎你想像。 :)

6.4 處理路徑

模組 os 有一個子模組 os.path,它包含有用的函數來處理檔案和目錄。以下是其中一些:

獲取檔案擴展名

函數 splitext() 把檔名分成兩部分,並返回一個包含兩個元素的列表:名稱和擴展名。


import os.path

# 獲取檔案擴展名
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"檔案擴展名: {file_extension}")
        

獲取沒有擴展名的檔名


import os.path

# 獲取沒有擴展名的檔名
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"無擴展名的檔名: {file_name}")
        

從路徑中獲取檔名

函數 basename() 僅返回檔名,切掉整個路徑。


import os.path

# 從路徑中獲取檔名
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"檔名: {file_name}")
        

從路徑中獲取目錄

也可以很輕鬆地使用 函數 dirname() 獲取僅包含目錄的檔名。


import os.path

# 從路徑中獲取目錄
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"目錄: {directory}")
        

路徑合併

如果你有一個單獨的目錄和一個單獨的檔名,你可以得到該檔案的完整路徑。


import os.path

# 路徑合併
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"完整路徑: {full_path}")
        

6.5 平台無關的路徑

處理路徑時要注意作業系統之間的差異。路徑分隔符可能不同,這意味著在一個平台上工作的程式碼可能在另一個平台上不起作用。為了避免在不同作業系統之間移植程式碼時出問題,使用 os.path.join()os.path.abspath()os.path.dirname() 這些函數,這些確保了跨平台兼容性。

例如:


import os

# 平台無關地合併路徑
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"完整路徑: {full_path}")
        

獲取絕對路徑

如果你只有一個相對於當前工作目錄的路徑,但你想將其轉換為絕對路徑,有一個 函數 abspath()


import os.path

# 獲取絕對路徑
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"絕對路徑: {absolute_path}")
        

重要! 永遠在處理路徑時使用系統函數,因為你的程式碼可能會在使用不同檔案分隔符的作業系統上運行,比如,不是 \,而是 /,或者那些禁止使用 «:» 在路徑中的系統,或者其他。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION