Python fabric.api反斜杠地狱

Python fabric.api反斜杠地狱,python,fabric,backslash,Python,Fabric,Backslash,我不熟悉python和fabric api。我试图使用sudo功能在bash终端中运行sed命令,在找到特定的文本行后插入一些文本。我试图插入到正在修改的文件中的某些文本包含反斜杠,这些反斜杠似乎被结构忽略或导致语法错误。我尝试过“shell=true”和“shell=false”选项,但仍然没有成功。我怎样才能避开反斜杠?似乎“shell=true”只转义$and。我的代码如下 sudo('sed-i”/sometext/a textwith\backslash”/home/me/somefi

我不熟悉python和fabric api。我试图使用sudo功能在bash终端中运行sed命令,在找到特定的文本行后插入一些文本。我试图插入到正在修改的文件中的某些文本包含反斜杠,这些反斜杠似乎被结构忽略或导致语法错误。我尝试过“shell=true”和“shell=false”选项,但仍然没有成功。我怎样才能避开反斜杠?似乎“shell=true”只转义$and。我的代码如下


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

尝试在字符串前面加上
r
,这意味着它将被解释为原始字符串:

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

有关字符串文本及其在Python中的用法的更多信息,请参阅。

好的,最终解决了这个问题。RocketDonkey是正确的。需要使用“r”作为前缀,但也需要设置“shell=False”。这允许在从fabric.api调用时直接在bash终端中工作的内容能够工作


谢谢RocketDonkey!!

嗨。谢谢你的回复。不幸的是,我仍然没有任何运气。尽管奇怪的是,如果我加上13个反斜杠,它就行了!?我会继续玩……太棒了!哈,我绞尽脑汁想弄清楚这笔交易是什么-完全忽略了外壳部分。聪明的抓住你的部分-+1!你不需要在它前面加上r。只需设置
shell=False
对我来说很有效。这是一篇旧文章,但我一直坚持这一点。我尝试添加r'mystring'并将shell设置为False,但没有成功。我收到了错误…/bin/sh:-c:0行:在查找匹配的'''/bin/sh:-c:1行:语法错误:意外的文件结尾