chdir 修改 Python 中的路径

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] The system cannot find the file specified: "\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 编码打开文件。