Python 3.x 根据列表重命名文件

Python 3.x 根据列表重命名文件,python-3.x,Python 3.x,我正在尝试使用列表重命名目录中的文件。到目前为止,我的代码只会在给我一个FileNotFoundError之前重命名第一个文件。我如何读取列表并以与列表相同的顺序重命名文件 import os import glob fileLib = ('/filepath1/') ref = ('/filepath2/ref.csv') for file in glob.glob(os.path.join(fileLib, '*.csv')): with open(ref) as list1:

我正在尝试使用列表重命名目录中的文件。到目前为止,我的代码只会在给我一个FileNotFoundError之前重命名第一个文件。我如何读取列表并以与列表相同的顺序重命名文件

import os
import glob

fileLib = ('/filepath1/')
ref = ('/filepath2/ref.csv')

for file in glob.glob(os.path.join(fileLib, '*.csv')):
    with open(ref) as list1:
        line = list1.read().split(',\n')
        for name in line:
            os.rename(file, os.path.join(fileLib, '{}.csv'.format(name)))

您正在对同一个文件应用重命名,因为循环是嵌套的

因此,它第一次工作时,以及下一次尝试重命名已重命名的文件时

重新组织代码。首先,读取新名称文件:

fileLib = '/filepath1/'
ref = '/filepath2/ref.csv'

with open(ref) as list1:
    newnames = list1.read().split(',\n')
然后
zip
目录内容和新名称列表以及单个循环:

for file,newname in zip(glob.glob(os.path.join(fileLib, '*.csv')),newnames):
     os.rename(file, os.path.join(fileLib, '{}.csv'.format(newname)))

由于
zip
在其中一个iterable参数用尽时停止,因此如果
glob
结果比新名称列表长,则重命名将仅部分完成,因此最好在重命名之前检查两个列表的大小是否相同。

感谢您向我介绍zip内容,我之前不知道如何订购它,这样它就可以工作了,但这个效果很好。