ValueError:rename:src对于python上的Windows太长



我不是程序员,但我尝试使用python自动重命名数千个文件。但是出现了这个错误。我曾尝试使用win32api缩短路径,在路径之前使用\?表示法,甚至将文件夹移动到驱动器C:\以缩短路径,但错误仍然存在。我希望文件名添加0,具体取决于文件的数量。例如:如果我有2000个文件,我希望在最后一个x2000 之前,名称为0001x0012

import os, win32api
def main():
i = 0
path = "C:/New folder/"
path = win32api.GetShortPathName(path)
while i < len(os.listdir(path))+1:
filename = os.listdir(path)
s = len(str(i))
p = "x" + ("0" * (4-int(s))) + str(i) + ".jpg"
my_dest = p
my_source = path + str(filename)
my_dest =path + my_dest
os.rename(my_source, my_dest)
print(my_dest)
i+=1
if __name__ == '__main__':
main()

os.listdir(path)返回文件名列表,而不是单个文件名。您必须迭代此列表:

import os, win32api
def main():
path = "C:/New folder/"
path = win32api.GetShortPathName(path)
filenames = os.listdir(path)
for i, filename in enumerate(filenames):
my_source = path + filename
new_name = 'x%04d.jpg' % i
my_dest = path + new_name
os.rename(my_source, my_dest)
print(my_source, my_dest) # print both
if __name__ == '__main__':
main()

在我的一个本地目录上打印(无需重命名(:

C:/Booboo/ANGULA~1/.htaccess C:/Booboo/ANGULA~1/x0000.jpg
C:/Booboo/ANGULA~1/angucomplete-alt C:/Booboo/ANGULA~1/x0001.jpg
C:/Booboo/ANGULA~1/angular-route.min.js C:/Booboo/ANGULA~1/x0002.jpg
C:/Booboo/ANGULA~1/angular.html C:/Booboo/ANGULA~1/x0003.jpg
C:/Booboo/ANGULA~1/angular2.html C:/Booboo/ANGULA~1/x0004.jpg
C:/Booboo/ANGULA~1/angular3.html C:/Booboo/ANGULA~1/x0005.jpg
C:/Booboo/ANGULA~1/angular4.html C:/Booboo/ANGULA~1/x0006.jpg
C:/Booboo/ANGULA~1/angular5.html C:/Booboo/ANGULA~1/x0007.jpg
C:/Booboo/ANGULA~1/angular6.html C:/Booboo/ANGULA~1/x0008.jpg
C:/Booboo/ANGULA~1/authorization.py C:/Booboo/ANGULA~1/x0009.jpg
C:/Booboo/ANGULA~1/authorization.pyc C:/Booboo/ANGULA~1/x0010.jpg
etc.

最新更新