Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python字符串中的单引号和双引号_Python_Linux - Fatal编程技术网

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

我想调用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 &"' %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代码中。这当然不会强迫您使用它