Python子进程:命令在Python中失败,但在Shell中工作
我试图通过Python的子进程运行命令,但它无法正常运行。如果我在shell中键入:Python子进程:命令在Python中失败,但在Shell中工作,python,command-line,subprocess,Python,Command Line,Subprocess,我试图通过Python的子进程运行命令,但它无法正常运行。如果我在shell中键入: pack < packfile.dat 软件抱怨: Pack must be run with: pack < inputfile.inp Reading input file... (Control-C aborts) 因为我对此有点陌生,如果这不是最佳实践,请让我知道 提前感谢。I/O重定向是shell的产品,默认情况下Popen不使用重定向。试试这个: p = sp.Popen(cmd
pack < packfile.dat
软件抱怨:
Pack must be run with: pack < inputfile.inp
Reading input file... (Control-C aborts)
因为我对此有点陌生,如果这不是最佳实践,请让我知道
提前感谢。I/O重定向是shell的产品,默认情况下Popen不使用重定向。试试这个:
p = sp.Popen(cmd, shell=True)
从这里您还可以看到,有些人不喜欢shell选项。在这种情况下,您可以通过以下方式完成:
with open('input.txt', 'r') as input:
p = subprocess.Popen('./server.py', stdin=input)
“试试这个:
p = sp.Popen(cmd, shell=True)
import subprocess as sp
p = sp.Popen(['pack'], stdin = open('packfile.dat', 'r'))
谢谢!(提供答案和解释)谢谢!这非常有帮助!感谢您的快速回复,我对此表示感谢。我尝试了shell=True,但不幸的是,这不起作用。根据其他答案,“另请参见
p = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE, stdin=open('packfile.dat'))
import subprocess as sp
p = sp.Popen(['pack'], stdin = open('packfile.dat', 'r'))