Python3重命名从txt文件导入新名称的目录中的文件

时间:2016-04-23 03:33:41

标签: python

我有一个包含多个文件的目录。 文件的名称遵循这种模式4digits.1.4digits。[条形码] 条形码指定每个文件,它由7个字母组成。 我有一个txt文件,在一列中我有条形码,在另一列中有文件的真实名称。 我想做的是右键一个pyhthon脚本,它根据条形码自动将每个文件重命名为txt文件中的新名称。

有没有人可以帮助我?

非常感谢!

2 个答案:

答案 0 :(得分:2)

我会给你逻辑:

1。读取包含条形码和名称的文本文件。http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python

对于txt文件中的每一行,执行如下操作:

2. :将第一个(条形码)和第二个(名称)列中的值分配给两个单独的变量,分别为“B”和“N”。

3. 现在我们必须找到其中包含条形码“B”的文件名。链接 Find a file in python会帮助你做到这一点。(第一个答案,第三个例子,对于你的情况,你要找的名字就像'* B')

4. 上一步将为您提供以B为一部分的文件名。现在使用rename()函数将文件重命名为'N'。这个链接会帮助你。http://www.tutorialspoint.com/python/os_rename.htm

建议:不要使用包含两列的txt文件。你可以拥有一个易于处理的csv文件。

答案 1 :(得分:1)

以下代码将针对您的特定用例执行此任务,但可以使其成为更通用的重命名器。

import os # os is a library that gives us the ability to make OS changes

def file_renamer(list_of_files, new_file_name_list):
    for file_name in list_of_files:
        for (new_filename, barcode_infile) in new_file_name_list:
            # as per the mentioned filename pattern -> xxxx.1.xxxx.[barcode]
            barcode_current = file_name[12:19] # extracting the barcode from current filename
            if barcode_current == barcode_infile:
                os.rename(file_name, new_filename)  # renaming step
                print 'Successfully renamed %s to %s ' % (file_name, new_filename)


if __name__ == "__main__":
    path = os.getcwd()  # preassuming that you'll be executing the script while in the files directory
    file_dir = os.path.abspath(path)
    newname_file = raw_input('enter file with new names - or the complete path: ')
    path_newname_file = os.path.join(file_dir, newname_file)
    new_file_name_list = []
    with open(path_newname_file) as file:
        for line in file:
            x = line.strip().split(',')
            new_file_name_list.append(x)

    list_of_files = os.listdir(file_dir)
    file_renamer(list_of_files, new_file_name_list)

预假设: newnames.txt - 逗号

0000.1.0000.1234567,1234567
0000.1.0000.1234568,1234568
0000.1.0000.1234569,1234569
0000.1.0000.1234570,1234570
0000.1.0000.1234571,1234571

档案

1111.1.0000.1234567
1111.1.0000.1234568
1111.1.0000.1234569 

被重命名为

0000.1.0000.1234567
0000.1.0000.1234568
0000.1.0000.1234569

终端输出:

>python file_renamer.py
enter file with new names: newnames.txt
The list of files -  ['.git', '.idea', '1111.1.0000.1234567', '1111.1.0000.1234568', '1111.1.0000.1234569', 'file_renamer.py', 'newnames.txt.txt']
Successfully renamed 1111.1.0000.1234567 to 0000.1.0000.1234567
Successfully renamed 1111.1.0000.1234568 to 0000.1.0000.1234568
Successfully renamed 1111.1.0000.1234569 to 0000.1.0000.1234569