Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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中转义文本以用于Bash命令?_Python - Fatal编程技术网

如何在Python中转义文本以用于Bash命令?

如何在Python中转义文本以用于Bash命令?,python,Python,如何转义文本,以便在Bash命令中将其用作引用参数 我正在尝试运行如下命令: os.system(f'mycommand.py "{some_value_generated_by_python}"') sh mycommand.py "Hello y"'"all" 对于类似的问题,我们建议使用shlex.quote()或pipes.quote(),但这些都不能在引号内工作,因为它们都是通过将单引号和双引号包装在单引号或双引号内来转义

如何转义文本,以便在Bash命令中将其用作引用参数

我正在尝试运行如下命令:

os.system(f'mycommand.py "{some_value_generated_by_python}"')
sh mycommand.py "Hello y"'"all"
对于类似的问题,我们建议使用
shlex.quote()
pipes.quote()
,但这些都不能在引号内工作,因为它们都是通过将单引号和双引号包装在单引号或双引号内来转义单引号和双引号的,这不是正确的shell转义

我也不能使用不带引号的参数,因为我的字符串可能包含空格,而且很自然,两个方法都不会转义空格

因此,如果我的值是“Hello y'all”,它将生成如下命令:

os.system(f'mycommand.py "{some_value_generated_by_python}"')
sh mycommand.py "Hello y"'"all"
这不是有效的命令语法


我可以编写一些正则表达式来执行转义,但是是否有一些预先存在的函数来执行此操作?

您正在查找
子流程。运行
子流程。调用
,它们将参数放在列表中,如中所示

import subprocess
subprocess.run(["mycommand.py", "Hello y'all"])
# make sure mycommand.py is in your path, or use /path/to/mycommand.py
这种方式允许引号、空格、制表符和更多的乐趣,而不会受到中间shell的干扰