当前位置: 首页 > news >正文

文件移动工具 (File Mover)

这是一个简单但功能强大的Python脚本,用于递归遍历目录并将指定格式的文件移动到目标目录。默认支持移动PDF文件,但也可以通过参数指定其他文件格式。

功能特点

  • 递归遍历源目录及其所有子目录
  • 支持移动任意指定格式的文件
  • 自动处理目标目录中的文件重名情况
  • 详细的操作日志输出
  • 完整的错误处理机制
  • 支持命令行参数配置

系统要求

  • Python 3.6 或更高版本
  • 操作系统:Windows/Linux/MacOS

安装方法

  1. 克隆或下载此仓库
  2. 进入项目目录

使用方法

命令行参数

脚本支持以下命令行参数:

  • -s 或 --source:源目录路径(必需)
  • -t 或 --target:目标目录路径(必需)
  • -e 或 --ext:文件扩展名(可选,默认为 'pdf')

基本用法

  1. 移动PDF文件(默认):

    python move_pdfs.py -s "源目录路径" -t "目标目录路径"

  2. 移动其他格式文件:

    python move_pdfs.py -s "源目录路径" -t "目标目录路径" -e txt

示例

移动PDF文件:

python move_pdfs.py -s "C:\Users\Documents\source" -t "D:\target"

移动TXT文件:

python move_pdfs.py -s "C:\Users\Documents\source" -t "D:\target" -e txt

移动DOCX文件:

python move_pdfs.py -s "C:\Users\Documents\source" -t "D:\target" -e docx

在代码中调用

也可以在Python代码中直接调用移动函数:

from move_pdfs import move_files# 移动PDF文件
move_files(source_dir="源目录路径", target_dir="目标目录路径")# 移动其他格式文件
move_files(source_dir="源目录路径", target_dir="目标目录路径", file_ext=".txt")

注意事项

  1. 确保有足够的权限访问源目录和目标目录
  2. 建议在执行前备份重要文件
  3. 如果目标目录中存在同名文件,脚本会自动添加数字后缀
  4. 大量文件移动可能需要一定时间,请耐心等待
  5. 移动过程中会显示详细的操作日志

错误处理

  • 脚本会捕获并显示文件移动过程中的错误
  • 单个文件的错误不会影响其他文件的移动
  • 所有错误都会在控制台中显示详细信息

具体代码如下:

import os
import shutil
from pathlib import Path
import argparsedef move_files(source_dir, target_dir, file_ext='.pdf'):"""递归遍历源目录,移动指定格式的文件到目标目录Args:source_dir (str): 源目录路径target_dir (str): 目标目录路径file_ext (str): 要移动的文件扩展名,默认为.pdf"""# 确保文件扩展名格式正确if not file_ext.startswith('.'):file_ext = '.' + file_ext# 确保目标目录存在if not os.path.exists(target_dir):os.makedirs(target_dir)# 计数器moved_count = 0# 遍历源目录for root, dirs, files in os.walk(source_dir):for file in files:if file.lower().endswith(file_ext.lower()):source_path = os.path.join(root, file)target_path = os.path.join(target_dir, file)# 处理目标路径中的同名文件if os.path.exists(target_path):base, ext = os.path.splitext(file)counter = 1while os.path.exists(target_path):new_name = f"{base}_{counter}{ext}"target_path = os.path.join(target_dir, new_name)counter += 1try:shutil.move(source_path, target_path)print(f"已移动: {source_path} -> {target_path}")moved_count += 1except Exception as e:print(f"移动文件时出错: {source_path}")print(f"错误信息: {str(e)}")print(f"\n完成! 共移动了 {moved_count} 个{file_ext}文件到 {target_dir}")def parse_arguments():"""解析命令行参数"""parser = argparse.ArgumentParser(description='移动指定格式的文件到目标目录')parser.add_argument('--source', '-s', required=True, help='源目录路径')parser.add_argument('--target', '-t', required=True, help='目标目录路径')parser.add_argument('--ext', '-e', default='pdf', help='文件扩展名(不需要包含点号,默认为pdf)')return parser.parse_args()if __name__ == "__main__":args = parse_arguments()# 执行移动操作move_files(args.source, args.target, f'.{args.ext}') 

http://www.lryc.cn/news/522657.html

相关文章:

  • PTA L1-039 古风排版
  • Docker 镜像加速的配置
  • 简历_使用优化的Redis自增ID策略生成分布式环境下全局唯一ID,用于用户上传数据的命名以及多种ID的生成
  • PHP的HMAC_SHA1和HMAC_MD5算法方法
  • 二进制/源码编译安装mysql 8.0
  • 2025-1-15-十大经典排序算法 C++与python
  • 头盔识别技术
  • DeepSeek-v3在训练和推理方面的优化
  • 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(3 纯python的经济方案)
  • 1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)
  • 闪豆多平台视频批量下载器
  • 深入解析:如何用Java爬取淘宝分类详情接口(cat_get)
  • 语音识别的预训练模型
  • element-ui制作多颜色选择器
  • JVM体系结构
  • wandb使用遇到的一些问题
  • Java中的继承
  • Cadence笔记--原理图导入PCB
  • 从AI生成内容到虚拟现实:娱乐体验的新边界
  • 【Linux】gdb_进程概念
  • 安全类脚本:拒绝ssh暴力破解
  • Android15源码编译问题处理
  • 图解Git——分布式Git《Pro Git》
  • Linux内核编程(二十一)USB应用及驱动开发
  • 什么是数据仓库?
  • 计算机网络 (48)P2P应用
  • SK海力士(SK Hynix)是全球领先的半导体制造商之一,其在无锡的工厂主要生产DRAM和NAND闪存等存储器产品。
  • FunASR 在Linux/Unix 平台编译
  • git操作(Windows中GitHub)
  • 物联网网关Web服务器--Boa服务器移植与测试