Python 使用标准输入运行subprocess.run不';t过程
我正在尝试用python运行一个命令:Python 使用标准输入运行subprocess.run不';t过程,python,subprocess,Python,Subprocess,我正在尝试用python运行一个命令: from subprocess import run, DEVNULL run(["./rarcrack",'walks.rar'], text=True, input='nano1 nano2', stdout=DEVNULL) 但是,该命令似乎没有处理stdin(它不再显示单词,而在下面的示例中显示成功破解) 我决定这样做是因为我的印象是: bash管道将stdout重定向到stdin和 /rarcack从stdin获取一个参数,因为像 echo'n
from subprocess import run, DEVNULL
run(["./rarcrack",'walks.rar'], text=True, input='nano1 nano2', stdout=DEVNULL)
但是,该命令似乎没有处理stdin(它不再显示单词,而在下面的示例中显示成功破解)
我决定这样做是因为我的印象是:
stdout
重定向到stdin
和/rarcack
从stdin
获取一个参数,因为像echo'nano1 nano2'。/rarcack walks.rar
works该程序是问题是您使用
stdout=DEVNULL
放弃任何结果。您只会看到错误输出,而不会看到成功。问题在于,您会使用stdout=DEVNULL
放弃任何结果。您只看到错误输出,而不看到成功。我删除了它,但不是那样。stdout=DEVNULL阻止打印版本号内容。C程序仍然以任何方式输出带有DEVNULL的内容(它不会输出更多的单词)。正如您从源代码中看到的,并且正如我试图在这个答案中解释的那样,该消息会变成标准错误。我不知道C,如果我看起来很迟钝,那么很抱歉,但是消息是指“不再有单词”消息吗?我认为它实际上应该从标准输入中获取(虽然我不确定),但不知何故它没有处理标准输入,因为在没有设置输入的情况下,它会打印一个指定用法的错误。你的意思是它需要标准错误的输入吗?我不认为会有任何成功,因为如果我提供一个很长的单词列表,它几乎不需要任何时间来完成,而且如果它成功,文件应该被取消共享。我已经删除了它,不是这样。stdout=DEVNULL阻止打印版本号内容。C程序仍然以任何方式输出带有DEVNULL的内容(它不会输出更多的单词)。正如您从源代码中看到的,并且正如我试图在这个答案中解释的那样,该消息会变成标准错误。我不知道C,如果我看起来很迟钝,那么很抱歉,但是消息是指“不再有单词”消息吗?我认为它实际上应该从标准输入中获取(虽然我不确定),但不知何故它没有处理标准输入,因为在没有设置输入的情况下,它会打印一个指定用法的错误。你的意思是它需要标准错误的输入吗?我不认为有任何成功,因为如果我给它提供一个很长的单词列表,它几乎不需要任何时间来完成,而且如果它成功了,文件应该被取消共享。