删除python中文件名称中包含数字的文件

2024-03-29 12:43:08 发布

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

我有一个包含.jpg文件的目录,我需要删除这个目录中包含文件名中任何数字的所有文件。在

我用过操作系统列表目录指定路径。那时我可以使用fnmatch.fnmatch只删除“3453.jpg”之类的特定内容,但我需要它删除thomas9.jpg或thom43之类的内容作为.jpg. 基本上,任何包含数字的文件名都需要删除。在

谢谢, 汤姆


Tags: 文件路径目录内容列表文件名数字jpg
3条回答

在您的情况下,regex不是真正必要的,如果您想删除文件名中包含任何数字的任何文件,那么您可以通过以下方式简单地执行此操作:

import os

my_path = 'path_to_your_directory'
any_digit = '1234567890'

os.chdir(my_path) #Just to be sure you are in your working directory not else where!

for f in os.listdir('.'):
    if any(x in f for x in any_digit) and f.endswith('.jpg'):
        os.remove(f)

您也可以使用string模块,然后:

^{pr2}$

使用re模块。在

import os
import re


for _file in os.listdir('.'):
    if re.search('\d.*\.jpg$', _file):
        print(_file)

使用^{}比使用regex稍微容易一些:

import glob
import os

def delete_files(path, pattern):
    for f in glob.iglob(os.path.join(path, pattern)):
        try:
            os.remove(f)
        except OSError as exc:
            print exc

>>> delete_files('/tmp', '*[0-9]*.jpg')

os.remove()应该在try/except块中调用,以防文件无法删除,例如权限不足,被另一个进程使用,文件是一个目录等

如果使用regex,如果有许多文件,则值得在循环之外编译模式:

^{pr2}$

相关问题 更多 >