簡體   English   中英

從路徑生成的python打開文件

[英]python open file from path generate

嗨,我從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

文件名前綴row[0]UTF-8編碼的,並且以Unicode 字節順序標記(BOM)開頭。

您可以使用以下代碼對其進行解碼

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

要閱讀有關編碼的更多信息,請參見7.8.2。 手冊中的編碼和Unicode

似乎正在發生一些編碼問題。 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,所以這不是一個壞假設。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM