2015-09-11 109 views
-1

我想重命名文件使用Excel表和熊貓,但我不斷收到IO錯誤。在「文件名」列中,我有原始文件名以及我希望它在「重命名」列中的內容。我知道還有其他方法可以做到這一點,但我不明白爲什麼以下方法無效。使用熊貓重命名文件

import os 
import pandas as pd 
from os.path import join 
import shutil 

dir = os.path.dirname(__file__) 
excelFile = join(dir,'test.xlsx') 
output_image_dir = os.path.join(dir,'PREAPPROVAL') 
df = pd.read_excel(excelFile, sheetname='rename') 


for x,y in zip(df['Filename'].astype('str'),df['rename']): 
    x = join(output_image_dir,x) 
    y = join(output_image_dir,y) 
    shutil.move(x,y) 

Traceback (most recent call last): 
    File "D:\Dropbox\1. Projects\2. Python\2. X1\rename_images.py", line 26, in <module> 
    shutil.move(x,y) 
    File "c:\python27\lib\shutil.py", line 302, in move 
    copy2(src, real_dst) 
    File "c:\python27\lib\shutil.py", line 130, in copy2 
    copyfile(src, dst) 
    File "c:\python27\lib\shutil.py", line 82, in copyfile 
    with open(src, 'rb') as fsrc: 
IOError: [Errno 2] No such file or directory: 'D:\\Dropbox\\1. Projects\\2. Python\\2. X1\\PREAPPROVAL\\VERT.jpg' 
[Finished in 0.3s] 
+0

在重命名之前放入一個'x'和'y'的print,看路徑是否有意義。 –

+0

您是否嘗試在'shutil.move'之前打印'x'並檢查其是否爲有效文件? –

+0

@AnandSKumar我先打印了x。我甚至用列表理解[listdir(outputimagedir)中的f來代替我的zip的第一部分),它運行良好。我從數據框中打印出名字並將其與列表理解進行比較,並且看起來完全相同。 –

回答

0

對不起,但我想通了。其中一個文件名有一個額外的空間,可以將所有內容全部刪除。謝謝。