我是从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 :(得分:0)
文件名前缀row[0]
是UTF-8编码的,以Unicode byte order mark (BOM)开头。
您可以使用以下内容decode:
prefix = row[0].decode('utf-8-sig')
filename = os.path.join(filename, prefix + suffix)
要阅读有关编码的更多信息,请参阅手册中的7.8.2. Encodings and Unicode。
答案 1 :(得分: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,所以这不是一个错误的假设。