2013-08-07 5 views
0

$ 기호가 포함 된 파일 경로가 있습니다.이 파일은 \으로 이스케이프 처리되었으므로 open()은 경로를 처리 할 수 ​​있습니다. 하지만 이제 열면 \$\\$으로 자동 전환됩니다. 예 :python 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()입니까? 나는 이것을 설명하는 공개 문서에서 무엇을 찾을 수 없습니다.

+0

$는 탈출 할 필요가 없습니다. – njzk2

답변

1

open() 않습니다. 이 이스케이프 있도록 뒷면에 바로 다시 붙여 넣을 수 있습니다 값을, 반향 때, 문자 그대로의 정규 파이썬 문자열에서

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

하는 \는이 특별한 의미 :이 문자열을 나타내는 경우 특수 문자를 이스케이프 파이썬,의 동일한 값을 다시 생성하는 Python 스크립트 또는 인터프리터 세션.

Linux 또는 Mac의 경우 일반적으로 이 아니며은 파일 이름에 $ 값을 이스케이프 처리해야합니다. $ 정규 파이썬 문자열에 특별한 의미가 없으며, 대부분의 리눅스 또는 Mac 파일 이름에서 :

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

아마도 누락 된 것이 있습니다. 다음을 시도했습니다. open ("/ test/$ somedir $/file.txt", "r") -> 작동하지 않음 open (r "/ test/$ somedir $/("/ test/\ $ somedir \ $/file.txt", "r") -> 작동하지 않습니다. open (r " /test/\$somedir\$/file.txt ","r ") -> 작동하지 않습니다. – Mentirosso

+0

'$'는 파이썬 문자열의 이스케이프 코드가 아니므로 원시 문자열 리터럴을 사용하면 아무 것도 변경되지 않습니다 . 'os.listdir ('/ test')'디렉토리의 이름은 무엇입니까? 만약 그것이 *'$ somedir $'이라면,'os.lisdir ('/ test/$ somedir $')'는 그 디렉토리에 있음을 알 수 있습니까? –

+0

os.listdir ('/ test')는 OSError에서 $ somedir $하지만 os.listdir ('/ test/$ somedir $') 결과를 다시 보여줍니다 : [Errno 2] No such file or directory ... – Mentirosso

0

더 복잡한 풍경 상황을 다루는 피하기 위해 문자열 변수 전에 r를 추가 문자열의 문자 적 ​​표현을 사용해보십시오, 예를 들어 : \ttab로 해석됩니다

print 'C:\test' 
#C:  est 

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

.

관련 문제