我有子过程命令将md5校验和检查为
subprocess.check_output('md5 Downloads/test.txt', stderr=subprocess.STDOUT, shell=True)
它工作正常。但是我读了尽量避免shell=True 但是当我跑步
shell=True
subprocess.check_output('md5 Downloads/test.txt', stderr=subprocess.STDOUT, shell=False)
我得到错误 OSError: [Errno 2] No such file or directory
OSError: [Errno 2] No such file or directory
我可以运行以上命令或解决方法shell=False还是可以保留shell=True?
shell=False
只需将参数传递check_output()为 列表即可 :
check_output()
subprocess.check_output(["md5", "Downloads/test.txt"], stderr=subprocess.STDOUT)
从文档:
args 是所有调用所必需的,并且应为字符串或程序参数序列。通常最好提供一个参数序列,因为它允许模块处理任何必需的参数转义和引用(例如,允许在文件名中保留空格)。如果传递单个字符串,则必须是 shellTrue(请参见下文),否则该字符串必须简单地命名要执行的程序而无需指定任何参数。
True