所以我正在寻找开发一个脚本来返回带有文件名和扩展名的双重文件,这样我就可以改变名称中的文件名(大写,删除点,破折号等),然后只需添加扩展名即可。 go(在某些时候我希望把它扔进GUI的东西)。
我不确定最好的方法是什么,但我想拥有它所以它需要扩展名(最后一个.ext),除非文件名以“part [任意数字的数字,任何数字”结尾从1开始的零个数 - 任意数字] .rar“然后它将最后两部分作为”扩展“。
我没有采用这种特定的方法。但是,我确实需要它集成到当前脚本中(集成到我将用于其他所有内容的相同脚本中)并且我知道它需要以我的双重名称,ext对结束。
我当前的代码:
import os, shutil, re
def rename_file (original_filename):
name, extension = os.path.splitext(original_filename)
name = re.sub(r"\'", r"", name) # etc...more of these...
new_filename = name + extension
try:
# moves files or directories (recursively)
shutil.move(original_filename, new_filename)
except shutil.Error:
print ("Couldn't rename file %(original_filename)s!" % locals())
[rename_file(f) for f in os.listdir('.') if not f.startswith('.')]
如何使用.rar作为“ext”的一部分,而不是作为名称的一部分,将“part [digits]”放入?
答案 0 :(得分:1)
您可以使用正则表达式而不是splitext
执行此操作:
m = re.search(r'(.*?)((part\[\d+\])?\.rar)', original_filename)
name, ext = m.groups()[:2]
所以,例如:
>>> m = re.search(r'(.*?)((part\[\d+\])?\.rar)', 'name_part[23].rar')
>>> m.groups()[:2]
('name_', 'part[23].rar')
或者
>>> m = re.search(r'(.*?)((part\[\d+\])?\.rar)', 'name_no_parts.rar')
>>> m.groups()[:2]
('name_no_parts', '.rar')
这假定扩展名实际为.rar
。如果情况并非如此,那么很容易调整正则表达式。