我有一个程序,它符合目录中的Java文件。我想要做的是创建一个数组,将文件名与其控制台输出相关联。我可以创建数组,但我需要以某种方式获得字符串形式的控制台输出。这就是我现在打印输出的方式:
for fn in directoryContents:
if fn.rfind(".java") != -1:
subprocess.check_call(['javac', fn])
java_class,ext = os.path.splitext(fn)
className = fn[0: fn.rfind(".java")]
cmd = ['java', className]
subprocess.call(cmd, shell=False)
print ("\n")
答案 0 :(得分:2)
您应该使用subprocess.Popen:
p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE)
somestr = p.stdout.readline()
答案 1 :(得分:2)
要从命令获取输出,您可以使用subprocess.check_output()
:
import subprocess
console_outputs = {fn: subprocess.check_output(["javac", fn])
for fn in directoryContents if fn.endswith('.java')}
答案 2 :(得分:1)
subprocess.call
接受一个可选参数stdout(以及stderr),你可以传递一个可写文件对象。你可以传递一个StringIO,然后将输出存储到一个字符串中,或者将它写入一个实际的文件,然后在需要时读取它。
答案 3 :(得分:0)
您可以使用subprocess.check_output,它返回命令的输出。