小编典典

如何避免shell = True在子过程中

python

我有子过程命令将md5校验和检查为

subprocess.check_output('md5 Downloads/test.txt', stderr=subprocess.STDOUT, shell=True)

它工作正常。但是我读了尽量避免shell=True 但是当我跑步

subprocess.check_output('md5 Downloads/test.txt', stderr=subprocess.STDOUT, shell=False)

我得到错误 OSError: [Errno 2] No such file or directory

我可以运行以上命令或解决方法shell=False还是可以保留shell=True


阅读 263

收藏
2021-01-20

共1个答案

小编典典

只需将参数传递check_output()列表即可

subprocess.check_output(["md5", "Downloads/test.txt"], stderr=subprocess.STDOUT)

文档

args
是所有调用所必需的,并且应为字符串或程序参数序列。通常最好提供一个参数序列,因为它允许模块处理任何必需的参数转义和引用(例如,允许在文件名中保留空格)。如果传递单个字符串,则必须是
shellTrue(请参见下文),否则该字符串必须简单地命名要执行的程序而无需指定任何参数。

2021-01-20