用Python複製文件的九種方法

以下是演示 “如何在Python中複製文件” 的 九種方法 。

  1. shutil copyfile()方法
  2. shutil copy()方法
  3. shutil copyfileobj()方法
  4. shutil copy2()方法
  5. os popen方法
  6. os系統()方法
  7. Thread()方法
  8. 子進程調用()方法
  9. 子進程check_output()方法

1. Shutil Copyfile()方法

該方法只有在目標可寫時纔將源的內容複製到目的地。如果您沒有寫入權限,則會引發 IOError 。

它通過打開輸入文件進行閱讀,忽略其文件類型。接下來,它不會對特殊文件進行任何不同的處理,也不會將它們複製爲新的特殊文件。

所述 的CopyFile() 方法利用較低級別的功能的 copyfileobj() 的下方。它將文件名稱作爲參數,打開它們並將文件句柄傳遞給 copyfileobj() 。該方法中有一個可選的第三個參數,您可以使用它來指定緩衝區長度。然後它將打開文件以讀取指定緩衝區大小的塊。但是,默認行爲是一次性讀取整個文件。

以下是有關 copyfile() 方法的要點。

  • 它將源的內容複製到名爲目標的文件。
  • 如果目的地不可寫,則複製操作將導致 IOError 異常。
  • 如果源文件和目標文件都相同,它將返回 SameFileError 。
  • 但是,如果目的地以不同的名稱預先存在,則副本將覆蓋其內容。
  • 如果目的地是目錄,則意味着此方法將不會複製到目錄,將會發生錯誤13。
  • 它不支持複製文件,如字符或塊設備和管道。

2. Shutil Copy()方法

copy()方法的功能類似於 “CP” 在Unix命令。這意味着如果目標是一個文件夾,那麼它將在其中創建一個與源文件相同的名稱( basename )的新文件。此外,該方法將複製其內容後將目標文件的權限與源進行同步。 如果要複製相同的文件,它也會拋出 SameFileError 。

3. Shutil Copyfileobj()方法

此方法將文件複製到目標路徑或文件對象。如果目標是文件對象,則需要在調用 copyfileobj() 之後明確關閉它。它假設一個可選參數(緩衝區大小),您可以使用它來提供緩衝區長度。這是在複製過程中保存在內存中的字節數。系統使用的默認大小爲16KB。

4. Shutil Copy2()方法

但是, copy2() 方法的功能類似於 copy() 。但是,在複製數據的同時,也可以在元數據中添加訪問和修改時間。複製同一個文件會導致 SameFileError 。

對於好奇 – Copymode()與Copystat()之間的區別。

5. Os Popen()方法

該方法創建一個指向或來自該命令的管道。它返回一個連接到管道的打開的文件對象。您可以根據文件打開模式(即’r’(默認)或’w’)使用它進行讀取或寫入。

  • 模式 – 它可以是’r’(默認)或’w’。
  • bufsize – 如果其值爲0,則不會發生緩衝。如果設置爲1,則在訪問文件時將進行行緩衝。如果您提供的值大於1,則緩衝將以指定的緩衝區大小進行。但是,對於負值,系統將採用默認緩衝區大小。

對於Windows操作系統。

對於Linux操作系統。

6. Os System()方法

它是運行任何系統命令的最常見方式。使用 system() 方法,可以在subshell中調用任何命令。在內部,這種方法會調用標準的C庫函數。

此方法返回命令的退出狀態。

對於Windows操作系統。

對於Linux操作系統。

7.以Async方式使用線程庫的Python文件複製

如果要以異步方式複製文件,請使用以下方法。在這裏,我們使用Python的線程模塊在後臺運行復制操作。

使用此方法時,請確保採用鎖定以避免死鎖。如果您的應用程序正在使用多個線程讀取/寫入文件,您可能會面對它。

8.使用子進程的Call()方法在Python中複製一個文件

子進程模塊提供了一個簡單的界面來處理子進程。它使我們能夠啓動子進程,附加到其 輸入/輸出/錯誤管道 ,並檢索返回值。

子流程模塊旨在替代傳統模塊和功能,如* os.system,os.spawn ,os.popen ,popen2。 

它公開一個 call() 方法來調用系統命令來執行用戶任務。

9.使用子進程的Check_output()方法在Python中複製文件

使用子 進程 的 check_output() 方法,可以運行外部命令或程序並捕獲其輸出。它還支持管道。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章