使用正则表达式从目录中删除有关文件名中特定详细信息的某些文件

时间:2018-01-21 14:59:26

标签: python regex match

这里我尝试创建一个代码,根据掩码删除文件夹中的文件。应删除所有包含17的文件,文件夹中文件的一般格式为?? _ ???? 17 *。* where? - 任何符号1..n,A..z; * - 任何长度的符号; _和17 - 在任何文件中(其他文件也包含18个),其扩展名无关紧要。文件夹中某些文件的例子:AB_DEFG17Something.Anything - Copy(2).txt; AB_DEFG18Something.Some - 复制(3).txt ... 附:为之前的不充分和不准确的解释道歉。如果文件的名称相似,那么你对globe.globe是正确的。 很高兴接受有关此任务的观点,我希望它对其他人有用。

import os
import re

dir_name = "/Python/Test_folder"    # open the folder and read files
testfolder = os.listdir(dir_name)

def matching(r, s):                 # condition if there's nothing to match
    match = re.search(r, s)
    if match:
        return "Files don't exist!"

matching(r'^\w\w\[_]\w\w\w\w\[1]\[7]\w+\[.]\w+', testfolder)  # matching the mask of files

for item in testfolder.index(matching):
    if item.name(matching, s):
        os.remove(os.path.join(dir_name, item))

# format of filenames not converted :  ??_????17*.* 

1 个答案:

答案 0 :(得分:1)

具有模式??_????17*.*的文件夹中的所有文件都将使用以下代码删除:

import os
import re

dir_name = "/Python/Test_folder"    # open the folder and read files
testfolder = os.listdir(dir_name)

p = re.compile(r'^[1-9\w]{2}_[1-9\w]{4}[1][7][\w]+\.[\w]+')
for each in testfolder:
    k = p.match(each)
    if k == None:
        continue
    os.remove(os.path.join(dir_name, each))

希望这就是你所需要的。