我有一个包含$
个符号的文件的路径,我使用\
进行了转义,因此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的文档中找到任何内容,其中描述了这一点。
答案 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
。