如何用Python批量复制服务器中指定路径的.wav文件到目标目录
批量复制指定路径的WAV文件到目标目录
我有一个存储多个.wav文件路径的文本文件location.txt,内容如下:
/home/user/test_audio_folder_1/audio1.wav /home/user/test_audio_folder_2/audio2.wav /home/user/test_audio_folder_3/audio3.wav /home/user/test_audio_folder_4/audio4.wav /home/user/test_audio_folder_5/audio5.wav
需要将这些分散的文件复制到目录/home/user/final_audio_folder/,最终目录要包含audio1.wav至audio5.wav所有文件。
已实现单个文件复制的代码:
import shutil original = r'/home/user/test_audio_folder_1/audio1.wav' target=r'/home/user/final_audio_folder/final_audio1.wav' shutil.copyfile(original,target)
但不知道如何循环读取文本文件中的路径实现批量复制。
解决方案
通过逐行读取文本文件路径,结合os模块提取文件名,再循环调用shutil即可完成批量复制。完整代码如下:
import shutil import os # 目标目录 TARGET_DIR = '/home/user/final_audio_folder/' # 确保目标目录存在,不存在则创建(exist_ok=True避免目录已存在时报错) os.makedirs(TARGET_DIR, exist_ok=True) # 读取location.txt中的路径,过滤空行 with open('location.txt', 'r') as f: audio_paths = [line.strip() for line in f if line.strip()] # 循环处理每个文件 for path in audio_paths: # 从完整路径中提取文件名 filename = os.path.basename(path) # 拼接目标文件路径 target_path = os.path.join(TARGET_DIR, filename) # 复制文件(保留原文件权限) shutil.copy(path, target_path) print(f"已复制: {path} -> {target_path}")
关键细节说明
os.makedirs(TARGET_DIR, exist_ok=True):提前创建目标目录,避免复制时因目录不存在抛出异常os.path.basename(path):自动从完整路径中提取文件名,无需手动拆分路径字符串os.path.join():跨系统安全拼接路径,避免因Windows/Linux路径分隔符差异出错shutil.copy():相比copyfile,会保留原文件的权限信息,更适配服务器环境- 列表推导式过滤空行:避免处理文本文件中可能存在的空行导致的无效路径错误
内容的提问来源于stack exchange,提问作者Turing101
相关产品推荐
相关产品推荐

