news 2026/5/1 10:02:46

python读取按行txt文件,并且将读取内容转成文件名,移动文件位置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python读取按行txt文件,并且将读取内容转成文件名,移动文件位置

你想要用 Python 实现读取一个按行存储文件名的 TXT 文件,将每行内容作为目标文件名,然后把这些文件从原位置移动到指定的新位置,我会为你提供一份完整、健壮的实现代码,并详细解释关键步骤。

实现思路

  1. 读取 TXT 文件:逐行读取 TXT 文件中的内容,清理每行的换行符、空格等无效字符,过滤空行;
  2. 路径处理:定义文件的源目录(文件原本所在位置)和目标目录(要移动到的位置),自动创建目标目录(避免目录不存在报错);
  3. 文件移动:遍历读取到的每个文件名,拼接完整的源路径和目标路径,使用shutil库安全移动文件,并处理文件不存在、权限不足等异常;
  4. 异常处理:针对常见错误(如文件不存在、权限问题、路径错误)给出明确提示,保证程序健壮性。

完整 Python 代码示例

python

import os import shutil def move_files_from_txt(txt_file_path, source_dir, target_dir): """ 从TXT文件读取文件名,将对应文件从源目录移动到目标目录 :param txt_file_path: 存储文件名的TXT文件路径(如:./file_list.txt) :param source_dir: 源文件所在目录(如:./source_files/) :param target_dir: 目标目录(如:./target_files/) """ # 1. 检查TXT文件是否存在 if not os.path.exists(txt_file_path): print(f"错误:TXT文件 {txt_file_path} 不存在!") return # 2. 自动创建目标目录(如果不存在) os.makedirs(target_dir, exist_ok=True) # 3. 读取TXT文件中的文件名(逐行) try: with open(txt_file_path, 'r', encoding='utf-8') as f: # 读取所有行,清理空行和换行符 file_names = [line.strip() for line in f.readlines() if line.strip()] except Exception as e: print(f"读取TXT文件失败:{str(e)}") return # 4. 遍历文件名,移动对应文件 success_count = 0 # 成功移动的文件数 fail_count = 0 # 移动失败的文件数 fail_files = [] # 记录移动失败的文件 for file_name in file_names: # 拼接源文件完整路径和目标文件完整路径 source_file = os.path.join(source_dir, file_name) target_file = os.path.join(target_dir, file_name) # 检查源文件是否存在 if not os.path.exists(source_file): print(f"跳过:文件 {source_file} 不存在!") fail_count += 1 fail_files.append(file_name) continue # 避免目标文件已存在(可选:覆盖/跳过,这里选择跳过) if os.path.exists(target_file): print(f"跳过:目标目录已存在文件 {file_name},不覆盖!") fail_count += 1 fail_files.append(file_name) continue # 移动文件 try: shutil.move(source_file, target_file) print(f"成功:{file_name} 已移动到 {target_dir}") success_count += 1 except PermissionError: print(f"失败:无权限移动 {file_name}(文件可能被占用/权限不足)") fail_count += 1 fail_files.append(file_name) except Exception as e: print(f"失败:移动 {file_name} 出错 - {str(e)}") fail_count += 1 fail_files.append(file_name) # 5. 输出移动结果统计 print("\n===== 移动完成 =====") print(f"总计读取文件名:{len(file_names)} 个") print(f"成功移动:{success_count} 个") print(f"移动失败:{fail_count} 个") if fail_files: print(f"失败文件列表:{fail_files}") # ------------------- 调用示例 ------------------- if __name__ == "__main__": # 请根据你的实际情况修改以下参数 TXT_FILE = "./file_list.txt" # 存储文件名的TXT文件路径 SOURCE_DIR = "./original_files/" # 源文件所在目录 TARGET_DIR = "./moved_files/" # 目标目录(会自动创建) # 调用函数执行文件移动 move_files_from_txt(TXT_FILE, SOURCE_DIR, TARGET_DIR)

关键说明

  1. TXT 文件格式要求

    • TXT 文件每行仅写一个文件名(包含扩展名),例如:

      plaintext

      商品1.jpg 文档2.pdf 视频3.mp4
    • 代码会自动过滤空行和行首 / 行尾的空格、换行符,无需手动清理。
  2. 路径配置注意事项

    • TXT_FILE:填写 TXT 文件的完整路径(如D:/list/file_names.txt)或相对路径(如./file_list.txt);
    • SOURCE_DIR/TARGET_DIR:路径结尾建议加/(Windows 系统加\),例如D:/source/./target/
    • Windows 系统路径可使用\\(转义)或原始字符串(如r"D:\source\file.txt")。
  3. 异常处理说明

    • 处理了 “TXT 文件不存在”“源文件不存在”“目标文件已存在”“权限不足” 等常见错误;
    • 目标文件已存在时默认跳过,若需要覆盖,可删除if os.path.exists(target_file):相关代码块。
  4. 依赖说明

    • 代码使用 Python 内置库osshutil,无需额外安装第三方库,直接运行即可。

总结

  1. 核心逻辑是读取 TXT→清理文件名→拼接路径→移动文件,关键要做好路径处理和异常捕获;
  2. os.makedirs(target_dir, exist_ok=True)可自动创建目标目录,避免目录不存在的报错;
  3. shutil.move()是 Python 移动文件的标准方法,支持跨目录、跨磁盘(部分系统)移动,比手动复制删除更安全。

如果需要调整逻辑(比如覆盖目标文件、移动时重命名、读取带路径的文件名),可以告诉我,我会帮你修改代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 12:24:35

Gitee码云是否托管HeyGem?搜索结果与官方同步性验证

Gitee码云是否托管HeyGem?搜索结果与官方同步性验证 在AI内容生成技术迅猛发展的今天,数字人视频系统正从实验室走向实际应用。无论是企业宣传、在线教育,还是社交媒体运营,能够“开口说话”的虚拟人物已成为提升内容生产效率的新…

作者头像 李华
网站建设 2026/4/23 14:28:54

滴滴出行安全提示:用数字人反复强调乘车注意事项

滴滴出行安全提示:用数字人反复强调乘车注意事项 在网约车行业,安全不是一句口号,而是藏在每一次行程细节里的责任。可现实是,再重要的安全守则,也敌不过司机日复一日的“信息疲劳”。文字公告被忽略,语音播…

作者头像 李华
网站建设 2026/4/23 8:49:32

C# using别名你真的会用吗?3个经典示例彻底搞懂命名冲突解决方案

第一章:C# using别名的前世今生在C#语言的发展历程中,using关键字始终扮演着重要角色。最初,using主要用于简化命名空间的引用,使开发者能够便捷地访问类库中的类型。随着语言的演进,C#引入了using alias机制&#xff…

作者头像 李华
网站建设 2026/5/1 7:28:43

避免内存暴涨:C#集合表达式中必须掌握的4种优化模式

第一章:避免内存暴涨:C#集合表达式中必须掌握的4种优化模式在处理大规模数据集合时,C#开发者常因不当使用集合表达式导致内存占用急剧上升。通过合理应用以下四种优化模式,可显著降低内存开销并提升程序性能。预分配集合容量 当已…

作者头像 李华
网站建设 2026/4/29 0:22:26

C# 12拦截器实战配置全解析(企业级应用必备技巧)

第一章:C# 12拦截器核心概念与演进C# 12 引入的拦截器(Interceptors)是一项革命性的语言特性,旨在提升方法调用的灵活性与可测试性。拦截器允许开发者在编译期将某个方法调用“重定向”到另一个实现,而无需修改原始调用…

作者头像 李华
网站建设 2026/4/30 9:50:28

【C#多平台兼容性调试】:从崩溃到稳定的7个关键步骤

第一章:C#多平台兼容性调试概述在现代软件开发中,C#已不再局限于Windows平台。随着.NET Core和后续的.NET 5统一框架的发布,C#实现了真正的跨平台能力,支持在Windows、Linux和macOS等操作系统上运行。然而,多平台运行也…

作者头像 李华