我是python的初学者,我需要制作一个重命名文件名的脚本。
我的文件采用“姓氏”格式,但我需要使用“姓氏”
我有这样的文件:
C:/Test/Smith John
C:/Test/Jones Fred
C:/Test/Jack Martin Ben
我需要他们像这样:
C:/Test/John Smith
C:/Test/Fred Jones
C:/Test/Ben Jack Martin
我已经尝试使用os.rename进行多种操作,但是我真的无法使其正常工作。
非常感谢您的帮助。
答案 0 :(得分:2)
rsplit
在文件末尾分隔文件名(假设姓氏是一个单词)<name> <lastname>
也使用pathlib
包进行文件操作。
from pathlib import Path
if __name__ == '__main__':
source_dir = Path('C:/Test')
for file in source_dir.glob('**/*'):
if file.is_dir():
continue
name_parts = file.stem.rsplit(maxsplit=1)
name_reversed = ' '.join(name_parts[::-1])
new_path = file.with_name(name_reversed + file.suffix)
# check the result
print(file, new_path)
# rename
# file.rename(new_path)
答案 1 :(得分:0)
尝试一下,
import os
path = "C:/Test/Smith John"
os.rename(re.search('Test\/(.+?)$', path).group(1), v.split(' ')[1]+" "+v.split(' ')[0])
答案 2 :(得分:0)
import os
# change working directory to the (C:/Test/)
os.chdir(“C:/Test/“)
os.rename(“Smith John”, “John Smith”)
os.rename(“Jones Fred”, “Fred Jones” )
os.rename(“Jack Martin Ben”, “Ben Jack Martin”)
答案 3 :(得分:0)
尝试一下:您可以通过搜索特定的字符串来修改文件名,然后反转文件名。
path = "C:/Test/"
entries = os.listdir(path)
for entry in entries:
old_filename = re.search('(.+?)$', entry).group(1)
new_filename = ' '.join(old_str.split()[-1::-1])
modified_path = path+new_filename
print(modified_path)
O / p:
C:/Test/John Smith
C:/Test/Fred Jones
C:/Test/Ben Jack Martin