python-3.x - 我可以将长 bash 命令传递给 asyncio.subprocess.create_subprocess_exec() 吗?

标签 python-3.x subprocess python-asyncio

马上,有一个类似的问题here但它并没有完全回答我的问题。不过,为了以防万一,我在那里发表了评论。

asyncio 中有一个 asyncio.subprocess.create_subprocess_exec 协程模仿更常见的 subprocess.Popen 命令与 shell=False 以防止 shell 注入(inject)。 Popen 接受字符串的列表create_subprocess_exec 只接受字符串,例如

asyncio.subprocess.create_subprocess_exec('ls', '-lah', 'myfile', stdout=..., stderr=..., stdin=...)

我有一个 bash 命令作为一个大字符串,例如s = 'ls -lah myfile'。我想将命令传递给 create_subprocess_exec 但是像 s.split() 这样的列表不起作用! 怎么做?

最佳答案

似乎 asyncio.subprocess.create_subprocess_exec 将接受一个加星标的列表作为一系列参数,所以解决方案应该是

cmd = ['ls', '-lah', 'myfile']
asyncio.subprocess.create_subprocess_exec(*cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE, stdin=asyncio.subprocess.PIPE)

请注意,以这种方式格式化 bash 命令可能很困难,尤其是使用 rsync 我发现。

关于python-3.x - 我可以将长 bash 命令传递给 asyncio.subprocess.create_subprocess_exec() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45111143/

相关文章:

python - 如何将并行子进程的输出写入不同的文件

python - 如何等待Python subprocess.check_output()完成?

python - 无限打印在后台进行异步轮询

python - 获取一个 asyncio 服务器来调用另一个服务器

html - 如何将 svg 文件上传到 django 应用程序?

python-3.x - 根据要删除的字符串列表删除字符串末尾的子字符串

python - 如何在 Tensorflow 中恢复训练好的模型并计算测试精度

Python C 程序子进程卡在 "for line in iter"

python - 3.4.2 中的 asyncio 问题 - 它只是由于某种原因终止

python - 将多个列表数据转换为字典