Shutil查找并删除文件

2024-04-27 03:33:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试自动化一些目前手工完成的工作

目的是查找文件名中包含例如编号408710的所有文档。请注意,文件名还包括其他字母或数字。例如2rsgf54087105f85sfr。程序现在应该搜索拥有组合408710的所有文件,然后将它们移动到正确的路径中

我确实知道如何移动文件,但到目前为止,我只能通过输入确切的文件名来移动文件。在这种情况下,我只有一个文件,而不是所有的文件与上述的组合。当然,我事先并不知道确切的文件名

下面是正在工作的东西的代码:

import shutil

src = "C:/Users/Startklar/Desktop/Ausgangsordner"
dst = "C:/Users/Startklar/Desktop/Empfangsordner/Sven"
dst2 = "C:/Users/Startklar/Desktop/Empfangsordner/Gerald"

# remove files
shutil.move(src=src + "/AA023300408710LFVI.docx", dst=dst)
shutil.move(src=src + "/BB023310187105ADIK.docx", dst=dst2)

Tags: 文件目的srcmove文件名users编号dst
1条回答
网友
1楼 · 发布于 2024-04-27 03:33:22

如果只想删除文件,可以使用regexp执行以下操作:

import os
import re
regexp = r'yourPattern.*\.docx$'
res = [f for f in os.listdir(path) if re.search(regexp , f)]
for f in res:
    print('Remove: '+f)
    os.remove(f)

您需要找到一个正则表达式,该表达式只查找您要删除的所有文件

如果您希望实际移动文件,如您的示例中所示,则如下所示(仅从您的示例中猜测regexp)

import os
import re

src = "C:/Users/Startklar/Desktop/Ausgangsordner"
filters = [["C:/Users/Startklar/Desktop/Empfangsordner/Sven", r'.*LFVI\.docx$'],
           ["C:/Users/Startklar/Desktop/Empfangsordner/Gerald", r'.*ADIK\.docx$']]

for f in os.listdir(src):
    for dst,regexp in filters:
        if re.search(regexp , f):
            shutil.move(src=f, dst=dst)
    

相关问题 更多 >