我是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)
答案 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 !!