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

问题描述

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

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

文档

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

解决方法

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

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

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

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

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

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