如何在python中删除多个文件中的字符

2024-06-30 15:56:21 发布

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

我想写一个简单的程序来批量重命名文件夹中的文件。在

文件格式:

11170_tcd001-20160824-094716.txt

11170_tcd001-20160824-094716.rst

11170_tcd001-20160824-094716.raw

在第一个“-”后面有一个不同的14位字符配置。在

我的最终目标是将上述内容转化为:

^{pr2}$

我知道有可能操作系统重命名python中的文件。但是,我不知道如何批量重命名具有不同字符配置的多个文件。在

这可能吗?在

下面是我想实现的一些伪代码。在

import os

pathiter = (os.path.join(root, filename)
    for root, _, filenames in os.walk(folder)
    for filename in filenames
)
for path in pathiter:
    newname =  path.replace('14 digits.txt', ' 0 digits.txt')
    if newname != path:
        os.rename(path,newname)

Tags: 文件pathintxtforosroot批量
2条回答

如果您正在寻找一种非regex方法,并且考虑到您的文件都与您期望的特定模式相匹配,那么首先可以使用splitext获取文件的扩展名:

from os.path import splitext
file_name = '11170_tcd001-20160824-094716.txt'
extension = splitext(file_name)[1]
print(extension) # outputs: .txt

然后,使用扩展名,拆分-上的文件名并获得第一项,因为您知道这是您想要保留的部分:

^{pr2}$

现在,附加扩展名:

new_filename = new_filename + extension
print(new_filename) # 11170_tcd001.txt

现在可以继续重命名:

os.rename(file_name, new_filename)

你应该尝试使用正则表达式,比如

import re

<...>

newfilename = re.sub(r'-\d{8}-\d{6}\b', '', oldfilename)

<...>

这将用文件名中没有字母、数字或下划线的“连字符、8位数字、连字符、6位数字”替换为空字符串。希望我说的对。在

相关问题 更多 >