使用python3用新创建的文件替换目录中的许多文件

时间:2018-02-23 22:30:16

标签: python

我使用下面的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)

由于

2 个答案:

答案 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.renamesos.renameos.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)