假設我有一個包含1000個csv文件的文件夾,其名稱爲event_1.csv
,event_2.csv
,...,event_1000.csv
。Python:重命名文件返回錯誤的名稱
我其實有25個文件夾,這樣,想以這樣的方式將這些文件重命名前4個字符是0001
的第一個文件夾,0002
第二,高達0025
一路。最後4個字符表示事件,例如第一個事件是0001
,第二個0002
,一直到1000
。
因此,第一個文件夾中的第一個文件以這種方式更改:event_1.csv = 00010001.csv
。
反正我的代碼是錯誤的,因爲在一號文件夾中的第一個100個文件被命名爲00020000.csv
到00020099.csv
,因爲0002
應該只在第二文件夾中。然後,從第101個文件到最後,我得到正確的文件名:00010101.csv
到00011000.csv
。
這是我的代碼:那有什麼問題?
import os, sys
import glob
import csv
directory=r'C:\Users\MyName\Desktop\Tests'
subdir=[x[0] for x in os.walk(directory)]
subdir.pop(0)
N=['0001','0002','0003','0004','0005','0006','0007','0008','0009','0010','0011','0012','0013','0014','0015','0016','0017','0018','0019','0020','0021','0022','0023','0024','0025']
for i in subdir:
for n in N:
temp_dir=r''+i
os.chdir(temp_dir)
A=str(n)
for file in glob.glob("*.csv"):
if len(file)==11:
event='000'+str(file[6])
newname=A+event
os.rename(file, newname + '.csv')
if len(file)==12:
event='00'+str(file[6:8])
newname=A+event
os.rename(file, newname + '.csv')
if len(file)==13:
event='0'+str(file[6:9])
newname=A+event
os.rename(file, newname + '.csv')
if len(file)==14:
event=file[6:10]
newname=A+event
os.rename(file, newname + '.csv')
您可能想要查看[zero-padding](http://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-string)來簡化您的代碼 –