繁体   English   中英

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]系统找不到指定的文件:“ \\ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM