python子流程给出错误“文件名目录名或卷语法不正确”
我试图使用子进程打开一个文件:python子流程给出错误“文件名目录名或卷语法不正确”,python,Python,我试图使用子进程打开一个文件: import subprocess subprocess.call('notepad > hmm.txt') 或 但是它给了我一个错误,文件名、目录名或卷语法不正确。这很简单也很愚蠢,但我发现包含选项shell=True可以解决这个问题,因为它随后在shell中运行命令,而不是子进程调用它的另一种方式,我不确定它的正确性……请您理解,进行注释。对于subprocess.Popen应该是相同的 subprocess.call('notepad > h
import subprocess
subprocess.call('notepad > hmm.txt')
或
但是它给了我一个错误,文件名、目录名或卷语法不正确。这很简单也很愚蠢,但我发现包含选项shell=True可以解决这个问题,因为它随后在shell中运行命令,而不是子进程调用它的另一种方式,我不确定它的正确性……请您理解,进行注释。对于subprocess.Popen应该是相同的
subprocess.call('notepad > hmm.txt', shell = True)
或
另外,请注意shell=True,因为:
警告:执行包含来自不受信任源的未初始化输入的shell命令会使程序易受shell注入攻击,这是一个严重的安全缺陷,可能导致任意命令执行。因此,如果命令字符串是从外部输入构建的:重定向是由shell提供的功能,在您的情况下可能是cmd.exe,则强烈建议不要使用shell=True。您可以使用Popen将stdout设置为您自己的文件对象。start也是一个shell命令,同样,它不会做任何使用Popen不能做的事情。shel在Windows上做的另一件事是文件名关联。同样,你可以自己访问注册表,但生命太短了。
subprocess.call('notepad > hmm.txt', shell = True)
subprocess.call('start excel.exe \"hmm.txt\"', shell = True)