一、複製文件的基本方法
Python在Linux上進行文件複製操作的方法主要是通過shutil庫中提供的copy()方法來實現,它的基本用法如下:
import shutil shutil.copy(源文件名, 目標文件名)
其中源文件名和目標文件名都是帶有路徑的字符串,例如:
import shutil shutil.copy('/home/user/source_file.txt', '/home/user/destination_folder/')
上述代碼將源文件複製到“destination_folder”文件夾中,文件名不變。
此外,shutil庫還提供了很多其他的文件操作方法,例如copy2()方法不僅可以將文件複製到目標位置,還會嘗試保留文件的元數據(如權限、時間戳等),使用方式與copy()方法類似。
二、複製文件夾及其子文件夾
如果要複製整個文件夾,可以使用shutil庫中的copytree()方法:
import shutil shutil.copytree(源文件夾名, 目標文件夾名)
注意,目標文件夾必須是不存在的,否則會拋出異常。
copytree()方法還有一些其他性質,例如可以指定文件過濾器,只複製符合條件的文件。
三、複製時顯示進度條
如果在大文件複製時需要顯示進度條,可以使用tqdm庫,它可以方便地在終端中顯示進度條,代碼如下:
import shutil from tqdm import tqdm file_path = '/path/to/large_file' destination_folder = '/path/to/destination' with tqdm(total=os.path.getsize(file_path), unit='B', unit_scale=True) as progress_bar: shutil.copy(file_path, destination_folder) progress_bar.update(os.path.getsize(file_path))
tqdm使用起來非常簡單,只需要將shutil複製文件的過程放在with語句塊中,同時在with塊的外面加上tqdm()即可。然後,定義進度條起始值為0,總量為待複製的文件大小,單位為字節。
四、批量複製指定文件類型
有時候我們需要從一個文件夾中找出特定類型的文件,然後將它們複製到指定位置。下面是一個使用os模塊和shutil庫實現該功能的代碼示例:
import os import shutil source_dir = '/path/to/source_dir' file_ext = '.txt' target_dir = '/path/to/target_dir' for root, dirs, files in os.walk(source_dir): for file_name in files: if file_name.endswith(file_ext): source_file = os.path.join(root, file_name) shutil.copy(source_file, target_dir)
上述代碼可以從“source_dir”目錄中找到所有擴展名為“.txt”的文件,並將它們複製到“target_dir”目錄中。
五、使用rsync命令進行文件同步
rsync是Linux下非常有用的文件同步工具,可以快速、可靠地實現文件的複製和同步,尤其適合大量數據的備份工作。通過Python的subprocess庫,我們可以在Python腳本中調用rsync命令來實現文件同步和傳輸,代碼如下:
import subprocess source_dir = 'user@remote_host:/path/to/source_dir' target_dir = '/path/to/target_dir' subprocess.call('rsync -avz {} {}'.format(source_dir, target_dir), shell=True)
上述代碼將一個遠程主機上的“source_dir”目錄同步到本地的“target_dir”目錄下。
六、使用ftp進行文件傳輸
如果需要從一個FTP服務器中下載文件,Python內置的ftplib庫可以滿足需求。下面是一個使用ftplib庫下載FTP文件的代碼示例:
from ftplib import FTP ftp = FTP('ftp.example.com') ftp.login('username', 'password') remote_file = '/path/to/remote_file' local_file = '/path/to/local_file' with open(local_file, 'wb') as f: ftp.retrbinary('RETR {}'.format(remote_file), f.write) ftp.quit()
上述代碼將FTP服務器上的“remote_file”文件下載到本地的“local_file”文件中。
總結
以上是Python在Linux下進行文件複製操作的幾種方法,各有優缺點。根據具體需求可以選擇最合適的方法進行實現。
原創文章,作者:OEZM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/135864.html