Python删除与多个“or”匹配的文件

2024-04-25 00:26:02 发布

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

我正在尝试使用下面的删除一些文件的名称符合条件,包含'aa1'、'bb1'、'cc1'、'dd1'。你知道吗

它没有给出任何错误,但是没有一个这样的文件被删除。你知道吗

for f in os.listdir(working_folder):
    if 'aa1' in f or \
       'bb1' in f or \
       'cc1' in f or \
       'dd1' in f:
        try:
            os.remove(os.path.join(working_folder, f))
        except OSError:
            print "there's no such a file"

问题1:如何改进代码中的“或”的倍数?你知道吗

问题2:如何打印“没有aa1”、“没有bb1”等?你知道吗

我在下面试了一下,但都没用:

for f in os.listdir(working_folder):
    for k in pattern:
        if re.search(k, f):
            try:
                os.remove(os.path.join(working_folder, f))
            except OSError:
                print "there's no such a file"

squiguy建议的方法:

working_folder = 'C:\\'

pattern = ['aa1', 'bb1', 'cc1', 'dd1']

files_to_delete = []

for a in pattern:
    for f in os.listdir(working_folder):
        if a in f:
            files_to_delete.append(f)

for b in files_to_delete:
    os.remove(os.path.join(working_folder, b))
    print os.path.join(working_folder, b) + " removed"

Tags: orpathinforifosfolderremove
1条回答
网友
1楼 · 发布于 2024-04-25 00:26:02

您可以使用any来缩短该条件。你知道吗

patterns = ['aa1', 'bb1', 'cc1', 'dd1']

for f in os.listdir(working_folder):
    if any(pattern in f for pattern in patterns):
        try:
            os.remove(os.path.join(working_folder, f))
        except OSError:
            print "there's no such a file"

相关问题 更多 >