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
编码打开文件。
我有一个程序可以从文件中读取带有特殊字符(用于西班牙语)的字符串。然后我使用 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
编码打开文件。