自动文件复制/移动和重命名

时间:2019-10-17 03:06:00

标签: c# python automation

我是编码的新手,需要一点帮助...本质上,我在尝试自己找到立足点并获得基础知识之前要进行一些尝试,但是我希望能够将某些文件从一个特定目录复制/移动/重命名到另一个或多个目录。

已设置文件格式,以使所有文件均以日期(倒序)开头,后跟该文件的某些描述符,即191017_TGT.csv或191016_APP.txt

我正在尝试找到一种解决方案,以使Python / C#执行以下步骤:

  1. 确定源文件夹和目标文件夹
  2. 识别源文件夹中存在的文件描述符/类型。
  3. 如果它具有'A'描述符/类型并且是今天创建的,则复制/移动到文件夹'A',如果'B'复制/移动到文件夹'B'

这就是我要尝试的事情,我一直在玩(shutil.copy),但遇到了一些障碍。我希望能够自动化一些我必须要做的基本任务,并加快工作速度。

如果有人知道任何自动化任务的良好资源,请让我知道,或者一般而言,任何良好的编码基础资源。

谢谢! ?

1 个答案:

答案 0 :(得分:1)

这是一个让您入门的示例:

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

请注意,您可以使用regular expressions进行更好的模式匹配,但是作为新手,这可能要花很多时间。上面的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)