如下是演示「如何在Python中複製文件」的九種方法。異步
1.shutil copyfile()方法函數
2.shutil copy()方法測試
3.shutil copyfileobj()方法spa
4.shutil copy2()方法操作系統
5.os popen方法線程
6.os系統()方法3d
7.Thread()方法對象
8.子進程調用()方法blog
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()方法,能夠運行外部命令或程序並捕獲其輸出。它還支持管道。
End.
更多文章請前往51Testing軟件測試網。