c# - 自动文件复制/移动和重命名
问题描述
我是编码新手,需要一些帮助......本质上,在我真正找到立足点并获得基础知识之前,我正在尝试运行一些,但是我希望能够复制/将某些文件从一个特定目录移动/重命名到另一个或多个目录。
文件格式设置为所有文件都以日期开头(反转),后跟该文件的某些描述符,即 191017_TGT.csv 或 191016_APP.txt
我正在尝试找到让 Python/C# 执行以下步骤的解决方案:
- 确定源文件夹和目标文件夹
- 识别源文件夹中存在的文件描述符/类型。
- 如果它具有“A”描述符/类型并且是今天创建的,则复制/移动到文件夹“A”如果“B”复制/移动到文件夹“B”
这就是我正在尝试做的事情,我一直在玩(shutil.copy),但遇到了一些障碍。我希望能够自动化一些我必须完成的基本任务并加快速度。
此外,如果有人知道任何用于自动化任务的好资源,请告诉我或任何好的编码基础资源。
谢谢!
解决方案
这是一个帮助您入门的示例:
import fnmatch
import os
import shutil
src = r'C:\tmp\src'
dest = r'C:\tmp\dest'
for file_name in os.listdir(src):
# match any files that start with two digits
if fnmatch.fnmatch(file_name, '[0-9][0-9]*'):
src_name = os.path.join(src, file_name)
dest_name = os.path.join(dest, file_name)
shutil.copyfile(src_name, dest_name)
运行中:
C:\tmp>dir /b/s
C:\tmp\dest
C:\tmp\src
C:\tmp\test_move.py
C:\tmp\src\191016_APP.txt
C:\tmp\src\191017_TGT.csv
C:\tmp\src\dont_move.txt
C:\tmp>python test_move.py
C:\tmp>dir /b/s
C:\tmp\dest
C:\tmp\src
C:\tmp\test_move.py
C:\tmp\dest\191016_APP.txt
C:\tmp\dest\191017_TGT.csv
C:\tmp\src\191016_APP.txt
C:\tmp\src\191017_TGT.csv
C:\tmp\src\dont_move.txt
请注意,您可以使用正则表达式进行更好的模式匹配,但这对于新手来说可能有点困难。上面的fnmatch模式将匹配任何以两个数字开头的文件。
编辑:例如,如果您想将不同的文件移动到不同的位置,您可以修改脚本:
src = r'C:\tmp\src'
csv_dest = r'C:\tmp\dest_csv'
txt_dest = r'C:\tmp\dest_txt'
for file_name in os.listdir(src):
# match any csv files that start with two digits
if fnmatch.fnmatch(file_name, '[0-9][0-9]*.csv'):
src_name = os.path.join(src, file_name)
dest_name = os.path.join(csv_dest, file_name)
elif fnmatch.fnmatch(file_name, '[0-9][0-9]*.txt'):
src_name = os.path.join(src, file_name)
dest_name = os.path.join(txt_dest, file_name)
else:
print(f"Skipping {file_name}")
dest_name = None
if dest_name:
shutil.copyfile(src_name, dest_name)
推荐阅读
- asp.net-mvc - Fullcalendar 不会重新加载,即使使用 refetchEvents 和 rerenderEvents
- javascript - 用javascript输入文本
- java - Thymeleaf 不解释 sec 标签
- ruby-on-rails - 嵌套 activeadmin 形式的 Rails Froala 编辑器
- android - 我制作了一个 android 相机应用程序,但我想将它向左旋转 90 度和向右旋转 90 度,我该怎么做?
- ios - 从 AppDelegate 在 Swift 上调用异步函数
- python - Tkinter - 切换到不同页面时如何重置网格行配置
- excel - 在 VBA 函数中引用相邻表格列中的单元格
- amazon-web-services - 如何将所有对 AWS Lambda 函数的请求复制到第二个请求处理函数?
- java - 我正在尝试通过 try catch 将 1-100 的双精度输入到数组中