我使用下面的Python 3代码来更改名称如下的文件:
CT-8873-0002 CT-8873-0003 ...
到像
这样的名字CT-008-0002.dcm CT-008-0003.dcm ...
但我需要将名称更改为实际目录中的新名称。似乎无法做到这一点。尝试过很多事情。
from __future__ import print_function
import os
os.chdir('C:\\Users\\franc\\Desktop\\CT-INSPIRIUM-8873')
import glob
for fileName1 in glob.glob('CT-*'):
fileName1 = fileName1.split('-')
fileName1[1] = '008'
fileName1 = '-'.join(fileName1)
fileName2 = fileName1
print(fileName2)
由于
答案 0 :(得分:0)
您的代码只是创建一个新字符串fileName2
并将其打印出来,它不会更改您现有的文件名。
一个解决方案是python发送mv
命令:
import os
os.system('mv original_filename new_filename')
在你的情况下:
for fileName1 in glob.glob('CT-*'):
fileName1 = fileName1.split('-')
fileName1[1] = '008'
fileName1 = '-'.join(fileName1)
fileName2 = fileName1
// add below
os.system('mv {old_name} {new_name}'.format(old_name=fileName1, new_name=fileName2))
确保在真实数据文件上执行代码之前测试代码
答案 1 :(得分:0)
正如我对@haifzhan回答的评论,如果您已经在使用python3,那么实际上有许多方法可用于隐藏在os
模块中的文件或目录重命名。根据您的确切问题,您可以使用os.renames
,os.rename
或os.replace
。根据{{3}},os.replace
在跨平台方面更好。这意味着您的代码可能只是:
import os
for fileName1 in glob.glob('CT-*'):
fileName2 = fileName1.split('-')
fileName2[1] = '008'
fileName2 = '-'.join(fileName2)
# Does the renaming
os.replace(fileName1, fileName2)