2015-09-11 82 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

对不起,但我想通了。其中一个文件名有一个额外的空间,可以将所有内容全部删除。谢谢。