[英]chdir modifying the path in Python
我有一个程序可以从文件中读取带有特殊字符的字符串(用于西班牙语)。 然后,我使用chdir更改为名称为字符串的目录。
例如,在名为“ names.txt”的文件中,我得到了以下内容
Tableta
Música
.
.
etc
该文件是用utf-8编码的,所以我从python读取它如下
f=open("names.txt","r",encoding="utf-8")
names=f.readlines()
f.close()
并且确实读取全部成功
print(names)
输出:
['Tableta\n','Música\n', ...etc]
当我想切换到第一个目录(名字“ Tableta”,没有换行符)时出现问题
chdir(names[0][:-1])
我收到以下错误
FileNotFoundError:[WinError 2]系统找不到指定的文件:“ \\ ufeffTableta”
而且只会用名字来实现,这对我来说很奇怪。 使用其他名称,可以更改目录是否具有特殊字符
我以为它必须对编码进行处理,因为该'\\ ufeff'额外添加了字符。 因此,我将“ names.txt”文件更改为ANSI编码,并删除了所有特殊字符,以便可以使用python读取它,并且可以正常工作。 但是,我需要以utf-8编码保存该文件,以便我可以读取特殊字符。 有什么办法可以解决这个问题? python为什么要在字符串中仅使用名字添加“ \\ ufeff”字符?
您的文件“ names.txt”具有字节顺序掩码(BOM)。 要删除它,请使用以下解码器打开文件:
f = open("names.txt", encoding="utf-8-sig")
附带说明,剥离文件名更安全: names[0].strip()
而不是names[0][:-1]
。
文件的开头具有Unicode BOM。 读取文件时跳过第一个字符,或使用utf-8-sig
编码将其打开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.