如何从 python 中的多个文件中删除字符
How to remove characters from multiple files in python
我正在尝试编写一个简单的程序来批量重命名文件夹中的文件。
文件格式:
11170_tcd001-20160824-094716.txt
11170_tcd001-20160824-094716.rst
11170_tcd001-20160824-094716.raw
我有 48 个在第一个“-”之后有不同的 14 位字符配置。
我的最终目标是将上面的转换为:
11170_tcd001.txt
11170_tcd001.rst
11170_tcd001.raw
我知道可以在 python 中 os.rename 个文件。但是,我不知道如何批量重命名具有不同字符配置的多个文件。
这可能吗?
下面是我想要实现的一些伪代码。
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)
您或许应该尝试使用正则表达式,例如
import re
<...>
newfilename = re.sub(r'-\d{8}-\d{6}\b', '', oldfilename)
<...>
这会将文件名中任何未跟字母、数字或下划线的 'hyphen, 8 digits, hyphen, 6 digits' 替换为空字符串。希望我没猜错。
如果您正在寻找一种非正则表达式的方法,并且考虑到您的文件都符合您期望的特定模式,那么您首先可以做的是使用 splitext
:[=16 获取文件的扩展名=]
from os.path import splitext
file_name = '11170_tcd001-20160824-094716.txt'
extension = splitext(file_name)[1]
print(extension) # outputs: .txt
然后,有了扩展名,在 -
上拆分 file_name 并获得第一项,因为您知道那是您要保留的部分:
new_filename = file_name.split('-')[0]
print(new_filename) # 11170_tcd001
现在,附加扩展名:
new_filename = new_filename + extension
print(new_filename) # 11170_tcd001.txt
现在您可以继续重命名:
os.rename(file_name, new_filename)
我正在尝试编写一个简单的程序来批量重命名文件夹中的文件。
文件格式:
11170_tcd001-20160824-094716.txt
11170_tcd001-20160824-094716.rst
11170_tcd001-20160824-094716.raw
我有 48 个在第一个“-”之后有不同的 14 位字符配置。
我的最终目标是将上面的转换为:
11170_tcd001.txt
11170_tcd001.rst
11170_tcd001.raw
我知道可以在 python 中 os.rename 个文件。但是,我不知道如何批量重命名具有不同字符配置的多个文件。
这可能吗?
下面是我想要实现的一些伪代码。
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)
您或许应该尝试使用正则表达式,例如
import re
<...>
newfilename = re.sub(r'-\d{8}-\d{6}\b', '', oldfilename)
<...>
这会将文件名中任何未跟字母、数字或下划线的 'hyphen, 8 digits, hyphen, 6 digits' 替换为空字符串。希望我没猜错。
如果您正在寻找一种非正则表达式的方法,并且考虑到您的文件都符合您期望的特定模式,那么您首先可以做的是使用 splitext
:[=16 获取文件的扩展名=]
from os.path import splitext
file_name = '11170_tcd001-20160824-094716.txt'
extension = splitext(file_name)[1]
print(extension) # outputs: .txt
然后,有了扩展名,在 -
上拆分 file_name 并获得第一项,因为您知道那是您要保留的部分:
new_filename = file_name.split('-')[0]
print(new_filename) # 11170_tcd001
现在,附加扩展名:
new_filename = new_filename + extension
print(new_filename) # 11170_tcd001.txt
现在您可以继续重命名:
os.rename(file_name, new_filename)