python字符串中的单引号和双引号
我想调用python函数python字符串中的单引号和双引号,python,linux,Python,Linux,我想调用python函数pexpect.spawn(cmd),其中cmd是一个字符串,如下所示: ssh -t kity@192.199.61.205 'sudo nohup bash -c "./tcp_sender > /dev/null 2>&1 &"' ip地址总是在变化,因此类似于: ssh -t kity@%s 'sudo nohup bash -c "./tcp_sender > /dev/null 2>&1 &"' %ho
pexpect.spawn(cmd)
,其中cmd是一个字符串,如下所示:
ssh -t kity@192.199.61.205 'sudo nohup bash -c "./tcp_sender > /dev/null 2>&1 &"'
ip地址总是在变化,因此类似于:
ssh -t kity@%s 'sudo nohup bash -c "./tcp_sender > /dev/null 2>&1 &"' %host_ip
有几个“
和”
,我不知道如何处理它
所以基本上,它是关于如何处理python字符串中的转义
当存在变量子串时,如何处理它
谢谢您可以使用三重引号:
"""ssh -t kity@{0} 'sudo nohup bash -c "./tcp_sender > /dev/null 2>&1 &"'""".format(ip_address)
卡梅伦·斯帕尔已经给出了通用的答案 但在你的特殊情况下,你可能不需要这个 接受命令和参数字符串或命令字符串和单独参数字符串的列表。对于其他库中的大多数类似方法也是如此(就像标准库
子流程
模块中的所有方法)
因此,您只需将每个参数转换为字符串,如下所示:
pexpect.spawn('ssh', ['-t', 'kity@192.199.61.205', 'sudo nohup bash -c "./tcp_sender > /dev/null 2>&1 &"'])
事实上,文件明确指出了这一点,正是出于这个原因:
第二种形式的spawn(传递参数列表)很有用
在希望生成命令并传递自己的命令的情况下
参数列表。这可以使语法更加清晰
当然,在您的例子中,您实际上是在生成一个带有参数列表的命令……其中一个本身就是要生成的命令和一个参数列表(sudo
),依此类推几步(nohup
,bash
,最后是tcp\u发送方
),显然,pexpect
只能帮助您完成这些步骤中的第一步。幸运的是,在这种情况下,这就是您所需要的
如果您确实需要更多,那么有一些库可以从参数列表中生成POSIX样式的引用字符串(基本上与之相反),但有几次我需要一个,我发现它有问题,最后我自己重写了它…实际上没有那么复杂(基本上,只要逃避一切,然后引用所有参数)。但希望你永远不必这样做。triple
“
?,为什么不”
?任何一个都可以,我只是更习惯于看到Double用于triplequotes@misteryes它们都能工作,但使用三个“
更为常见(或惯用)在现有的python代码中。这当然不会强迫您使用它