Python 3.x 根据列表重命名文件
我正在尝试使用列表重命名目录中的文件。到目前为止,我的代码只会在给我一个FileNotFoundError之前重命名第一个文件。我如何读取列表并以与列表相同的顺序重命名文件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:
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内容,我之前不知道如何订购它,这样它就可以工作了,但这个效果很好。