问题描述
只需将参数传递check_output()
为 列表即可 :
subprocess.check_output(["md5", "Downloads/test.txt"], stderr=subprocess.STDOUT)
从文档:
args 是所有调用所必需的,并且应为字符串或程序参数序列。通常最好提供一个参数序列,因为它允许模块处理任何必需的参数转义和引用(例如,允许在文件名中保留空格)。如果传递单个字符串,则必须是shell
True
(请参见下文),否则该字符串必须简单地命名要执行的程序而无需指定任何参数。
解决方法
我有子过程命令将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
?