Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用标准输入运行subprocess.run不';t过程_Python_Subprocess - Fatal编程技术网

Python 使用标准输入运行subprocess.run不';t过程

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

我正在尝试用python运行一个命令:

from subprocess import run, DEVNULL
run(["./rarcrack",'walks.rar'], text=True, input='nano1 nano2', stdout=DEVNULL)
但是,该命令似乎没有处理stdin(它不再显示单词,而在下面的示例中显示成功破解)

我决定这样做是因为我的印象是:

  • bash管道将
    stdout
    重定向到
    stdin
  • /rarcack
    stdin
    获取一个参数,因为像
    echo'nano1 nano2'。/rarcack walks.rar
    works
  • 我不认为我可以把这些单词作为另一个参数传递(我不知道任何C)


    该程序是

    问题是您使用
    stdout=DEVNULL
    放弃任何结果。您只会看到错误输出,而不会看到成功。

    问题在于,您会使用
    stdout=DEVNULL
    放弃任何结果。您只看到错误输出,而不看到成功。

    我删除了它,但不是那样。stdout=DEVNULL阻止打印版本号内容。C程序仍然以任何方式输出带有DEVNULL的内容(它不会输出更多的单词)。正如您从源代码中看到的,并且正如我试图在这个答案中解释的那样,该消息会变成标准错误。我不知道C,如果我看起来很迟钝,那么很抱歉,但是消息是指“不再有单词”消息吗?我认为它实际上应该从标准输入中获取(虽然我不确定),但不知何故它没有处理标准输入,因为在没有设置输入的情况下,它会打印一个指定用法的错误。你的意思是它需要标准错误的输入吗?我不认为会有任何成功,因为如果我提供一个很长的单词列表,它几乎不需要任何时间来完成,而且如果它成功,文件应该被取消共享。我已经删除了它,不是这样。stdout=DEVNULL阻止打印版本号内容。C程序仍然以任何方式输出带有DEVNULL的内容(它不会输出更多的单词)。正如您从源代码中看到的,并且正如我试图在这个答案中解释的那样,该消息会变成标准错误。我不知道C,如果我看起来很迟钝,那么很抱歉,但是消息是指“不再有单词”消息吗?我认为它实际上应该从标准输入中获取(虽然我不确定),但不知何故它没有处理标准输入,因为在没有设置输入的情况下,它会打印一个指定用法的错误。你的意思是它需要标准错误的输入吗?我不认为有任何成功,因为如果我给它提供一个很长的单词列表,它几乎不需要任何时间来完成,而且如果它成功了,文件应该被取消共享。