2012-11-12 5 views
4

저는 파이썬과 패브릭 API를 처음 사용합니다. 나는 텍스트의 특정 라인이 발견 된 후 일부 텍스트를 삽입 bash 터미널에서 sed 명령을 실행하는 sudo 기능을 사용하려고합니다. 내가 수정중인 파일에 삽입하려고하는 텍스트 중 일부는 패브릭에 의해 무시되거나 구문 오류를 일으킬 수있는 백 슬래시를 포함합니다. 나는 "shell = true"와 "shell = false"옵션을 시도했지만 여전히 운이 없다. 백 슬래시에서 어떻게 벗어날 수 있습니까? "shell = true"는 $ 및 ". 내 코드 아래 만 이스케이프 처리합니다.파이썬 fabric.api 백 슬래시 지옥

sudo ('sed -i"/ sometext/textwith \ backslash "/home/me/somefile.txt',shell=True)

답변

5

은 원시 문자열로 해석됩니다 즉, r로 문자열을 접두어로 시도해보십시오.

sudo (r' sed -i "/sometext/a textwith\backslash" /home/me/somefile.txt',shell=True) 

추가 문자열 리터럴에 대한 정보와 파이썬에서의 사용을 위해 here를 참조

+1

안녕하세요. 응답 해 주셔서 감사합니다. 불행히도 나는 아직도 운이 없다. 이상한 점은 정확히 13 개의 백 슬래시를 추가하면 작동한다는 것입니다. 나는 계속 놀거야 ........ – Hoani888

4

OK, 마침내 이걸 해결 했어. 로켓 던키가 코르 ect. "r"접두사가 필요하지만 "shell = False"로 설정해야합니다. 이것은 bash 터미널에서 직접 fabric.api에서 호출 될 때 작동하는 것을 허용했습니다.

감사합니다. RocketDonkey !!

+1

굉장! 하. 나는 거래가 무엇인지 알아 내려고 노력하면서 내 머리를 까먹었습니다. 쉘 부분을 완전히 간과했습니다. 스마트 캐치 - +1! – RocketDonkey

+0

r의 접두어가 필요하지 않습니다. 'shell = False'를 설정하면 저에게 효과적입니다. – trss