2014-10-07 95 views
1

您好,我從一個CSV文件的信息,但在打開文件的錯誤構建路徑文件蟒蛇從路徑打開的文件生成

No such file or directory: 'C:\\New folder\\a\\\xef\xbb\xbf90305.xlsx' 

當我打印的文件名顯示

C:\New folder\a\90305.xlsx 

請幫助

with open (r'C:\New folder\li.csv','rb')as csvfile: 
      spamreader=csv.reader(csvfile,delimiter=',') 
      for row in spamreader: 
       filename = r'C:\New folder\a' 
       suffix='.xlsx' 
       filename=os.path.join(filename,row[0]+suffix) 
       with open(filename,"rb")as fo: 
        print fo 

回答

0

文件名前綴row[0]UTF-8編碼,並以Unicode開始。

您可以使用以下方法來decode它:

prefix = row[0].decode('utf-8-sig') 
filename = os.path.join(filename, prefix + suffix) 

要了解更多有關編碼,見7.8.2. Encodings and Unicode的說明書中無。

0

看起來有一些編碼問題正在進行。 CSV文件中的數據是經過編碼的,所以請使用codecs模塊(Python 2)打開文件,或者在打開文件(Python 3)時指定編碼。假設UTF8編碼,以及使用該utf-8-sig編解碼器在文件的開始照顧任何字節順序標記(BOM)的:

的Python 2

import codecs 

with codecs.open(r'C:\New folder\li.csv','rb', encoding='utf-8-sig') as csvfile: 
    etc. 

Python 3中

with open(r'C:\New folder\li.csv','rb', encoding='utf-8-sig') as csvfile: 
    etc. 

這假設只有一個UTF8 BOM,並且它出現在文件的開頭,而不是文件中的隨機點。你正在使用Windows,所以這不是一個錯誤的假設。