用于重命名目录中文件的Python代码无效
我希望不时以数字顺序重命名我的文件,例如,1.png、2.png、3.png等等 我写这段代码就是为了这样做,我只是以打印文件的名称来结束它,以确保它是正确的:用于重命名目录中文件的Python代码无效,python,Python,我希望不时以数字顺序重命名我的文件,例如,1.png、2.png、3.png等等 我写这段代码就是为了这样做,我只是以打印文件的名称来结束它,以确保它是正确的: import os os.chdir('/Users/hasso/Pictures/Digital Art/saved images for vid/1') for f in os.listdir(): f_name=1 f_ext= '.png' print('{}{}'.format(f_name,
import os
os.chdir('/Users/hasso/Pictures/Digital Art/saved images for vid/1')
for f in os.listdir():
f_name=1
f_ext= '.png'
print('{}{}'.format(f_name, f_ext))
我该怎么解决这个问题呢 我不知道为什么您需要使用
os.chdir()
来更改目录,而您可以直接将路径传递到os.listdir()
。要重命名文件,可以使用。您还需要增加文件名的计数器,因为您的当前代码在每次迭代中保持fname
等于1
。您需要将计数器保持在循环外,并在循环内递增它。这是您可以使用的地方,因为您可以使用索引
基本版本:
from os import listdir
from os import rename
from os.path import join
path = "path_to_images"
for i, f in enumerate(listdir(path), start=1):
rename(join(path, f), join(path, str(i) + '.png'))
from os import listdir
from os import rename
from os.path import join
from os.path import exists
path = "path_to_images"
extension = '.png'
fname = 1
for f in listdir(path):
if f.endswith(extension):
while exists(join(path, str(fname) + extension)):
fname += 1
rename(join(path, f), join(path, str(fname) + extension))
fname += 1
您可以使用获取完整路径,因为os.listdir()
不包括文件的完整路径。上面的代码也不是很健壮,因为它重命名了所有文件,并且不处理重命名已经存在的.png
文件
高级版本:
from os import listdir
from os import rename
from os.path import join
path = "path_to_images"
for i, f in enumerate(listdir(path), start=1):
rename(join(path, f), join(path, str(i) + '.png'))
from os import listdir
from os import rename
from os.path import join
from os.path import exists
path = "path_to_images"
extension = '.png'
fname = 1
for f in listdir(path):
if f.endswith(extension):
while exists(join(path, str(fname) + extension)):
fname += 1
rename(join(path, f), join(path, str(fname) + extension))
fname += 1
它用于检查文件是否已经存在。我不确定为什么需要使用
os.chdir()
来更改目录,而您可以直接将路径传递到os.listdir()
。要重命名文件,可以使用。您还需要增加文件名的计数器,因为您的当前代码在每次迭代中保持fname
等于1
。您需要将计数器保持在循环外,并在循环内递增它。这是您可以使用的地方,因为您可以使用索引
基本版本:
from os import listdir
from os import rename
from os.path import join
path = "path_to_images"
for i, f in enumerate(listdir(path), start=1):
rename(join(path, f), join(path, str(i) + '.png'))
from os import listdir
from os import rename
from os.path import join
from os.path import exists
path = "path_to_images"
extension = '.png'
fname = 1
for f in listdir(path):
if f.endswith(extension):
while exists(join(path, str(fname) + extension)):
fname += 1
rename(join(path, f), join(path, str(fname) + extension))
fname += 1
您可以使用获取完整路径,因为os.listdir()
不包括文件的完整路径。上面的代码也不是很健壮,因为它重命名了所有文件,并且不处理重命名已经存在的.png
文件
高级版本:
from os import listdir
from os import rename
from os.path import join
path = "path_to_images"
for i, f in enumerate(listdir(path), start=1):
rename(join(path, f), join(path, str(i) + '.png'))
from os import listdir
from os import rename
from os.path import join
from os.path import exists
path = "path_to_images"
extension = '.png'
fname = 1
for f in listdir(path):
if f.endswith(extension):
while exists(join(path, str(fname) + extension)):
fname += 1
rename(join(path, f), join(path, str(fname) + extension))
fname += 1
它用于检查文件是否已存在。您不断获得
1.png
建议作为新名称,因为您总是在循环中设置f_name=1
。在循环之前使用1
初始化它,然后在重命名每个文件时增加它
还有几点:
os.chdir
,因为即使默认值是
——当前目录,您也可以向提供目标路径用户
主目录时,如果不必硬编码,那就很好了。为您检索此值.png
文件,然后循环此列表f_name
编号您不断得到
1.png
建议作为新名称,因为您总是在循环中设置f_name=1
。在循环之前使用1
初始化它,然后在重命名每个文件时增加它
还有几点:
os.chdir
,因为即使默认值是
——当前目录,您也可以向提供目标路径用户
主目录时,如果不必硬编码,那就很好了。为您检索此值.png
文件,然后循环此列表f_name
编号我看不到重命名文件的代码,我是不是遗漏了什么?您可以使用os重命名它。如果需要,请重命名。您忘记了在循环中增加
fname
。@usr2564301这样做我该怎么做?我太迷路了,以至于。。。将是f_name+=1
。也许你应该从更简单的开始。如果你对索引做,在enumerate(os.listdir())中的f:
你甚至不必为增量而烦恼。使用index+1
(索引是基于0的)我没有看到重命名文件的代码,我缺少什么吗?您可以使用os重命名它。如果需要,请重命名。您忘记了在循环中增加fname
。@usr2564301这样做我该怎么做?我太迷路了,以至于。。。将是f_name+=1
。也许你应该从更简单的开始。如果你对索引做,在enumerate(os.listdir())中的f:
你甚至不必为增量而烦恼。使用index+1
(索引以0为基础)@usr2564301是的,我正在编辑我的答案以包括os.path.join()
。谢谢。@usr2564301是的,我正在编辑我的答案以包括os.path.join()
。谢谢,谢谢!我真诚地感谢你的帮助!非常感谢。我真诚地感谢你的帮助!