Python fabric.api反斜杠地狱

时间:2012-11-12 03:06:47

标签: python fabric backslash

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

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

2 个答案:

答案 0 :(得分:5)

尝试使用r为字符串添加前缀,这意味着它将被解释为原始字符串:

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

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

答案 1 :(得分:4)

好的,终于解决了这个问题。 RocketDonkey是对的。需要以“r”作为前缀,但也需要设置“shell = False”。这允许直接在bash终端中工作的东西在从fabric.api调用时工作。

感谢RocketDonkey !!