python open()转义反斜杠

时间:2013-08-07 11:44:54

标签: python io

我有一个包含$个符号的文件的路径,我使用\进行了转义,因此open()可以处理该路径。但是现在打开会自动将\$变为\\$。 例如:

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的文档中找到任何内容,其中描述了这一点。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

>>> os.listdir('/tmp/$somedir$')
['test']
>>> open('/tmp/$somedir$/test')
<open file '/tmp/$somedir$/test', mode 'r' at 0x105579390>

答案 1 :(得分:0)

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

print 'C:\test'
#C:      est

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

其中\t被解释为tab