0

我有一个包含$符号的文件的路径,我用它转义了,\所以open()可以处理路径。但是现在open会自动变成\$a \\$。例如:

open("/home/test/\$somedir\$/file.txt", "r")
result in an error message

IOError: [Errno 2] No such file or directory: '/home/test/\\$somedir\\$/file.txt'

我可以压制这个吗。为什么open()要这样做?我在 open 的文档中找不到任何内容,它描述了这一点。

4

2 回答 2

1

open() 不这样做。它是 Python,它在表示字符串时会转义任何特殊字符:

>>> path = '\$'
>>> path
'\\$'
>>> print path
\$

在常规的 Python 字符串文字中,a\具有特殊含义,因此在回显该值时会对其进行转义,可以将其粘贴回 Python 脚本或解释器会话以重新创建相同的值。

在 Linux 或 Mac 上,您通常不需要转义$文件名中的值;a$在常规 python 字符串中没有特殊含义,在大多数 Linux 或 Mac 文件名中也没有:

>>> os.listdir('/tmp/$somedir$')
['test']
>>> open('/tmp/$somedir$/test')
<open file '/tmp/$somedir$/test', mode 'r' at 0x105579390>
于 2013-08-07T11:46:02.543 回答
1

尝试在字符串变量之前使用字符串的文字表示,r以避免处理更复杂的 scape 情况,例如:

print('C:\test')
#C:      est

print(r'C:\test')
#C:\test

where\t被解释为tab.

于 2013-08-07T11:48:22.080 回答