【发布时间】:2020-10-31 11:30:28
【问题描述】:
我想像这样使用 os.rename() 重命名文件:
x_y.jpg
x 应该来自['2', '3', '4', '5', '8', '9', '10'] 列表。
y 应该从1 计数到10。到达10 后,x 应该跳到列表中的第二个数字(这里:'3'),y 应该重新开始计数。像这样:
2_1.jpg
2_2.jpg
2_3.jpg
...
3_1.jpg
3_2.jpg
我认为最好的办法是构建一个嵌套循环,但我不确定如何,因为我是 python 的初学者。我想过这样的事情,但这不能正常工作。只有第一个文件被重命名。然后出现一个错误,说明文件已经存在。
my_list = ['2', '3', '4', '5', '8', '9', '10']
included_extensions = ['jpg', 'JPG']
directory = [fn for fn in os.listdir(source_folder)
if any(fn.endswith(ext) for ext in included_extensions)]
for y, file in enumerate(directory):
for x in range(10):
for x in my_list:
os.rename(os.path.join(source_folder,file), os.path.join(destination_folder, ''.join([str(x),'_',str(y+1),'.jpg'])))
【问题讨论】:
-
你有
for x in range(10)和for x in my_list。您应该使用不同的变量名。 -
@hmm,他根本不需要带范围的循环
-
@OlvinRoght 我会把它留给答案。我只是指出了一个错字或明显的错误。
标签: python for-loop rename nested-loops file-rename