【发布时间】:2015-02-17 10:55:26
【问题描述】:
我正在创建一个执行以下任务的 python 脚本: 1)列出目录中的所有文件 2) 如果找到的文件是 .java 类型,那么 3) 它使用 subprocess.check_call 编译 java 文件 4) 如果没有错误,则使用与文件名相同的类名执行文件
现在某些文件在运行时需要用户输入。 这正是我被困的地方。我的脚本编译并运行 java 程序。 但是每当我的 java 程序要求输入时,"Enter The Number :" ,我的脚本不会接受输入,因为会引发以下错误:
输入号码
线程“main”中的异常 java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:415)
at java.lang.Integer.parseInt(Integer.java:497)
at inp.main(inp.java:17)
我希望屏幕等待我的输入,当我输入数字时它会恢复执行
我的java程序是:
import java.io.*;
class inp
{
public static void main(String args[])throws IOException
{
InputStreamReader in=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(in);
System.out.println("Enter the Number");
int n=Integer.parseInt(br.readLine());
int b=10*n;
System.out.println("T 10 multiple of Number is : "+b);
}
}
我的 python 脚本是:
import subprocess
import sys
import os
s=os.getcwd()
s="codewar/media/"
print os.chdir(s)
t=os.getcwd()
print os.listdir(t)
for file in os.listdir(t):
if file.endswith(".java"):
proc=subprocess.check_call(['javac',file])
print proc
if proc==0:
l=file.split(".")
proc=subprocess.Popen(['java',l[0]],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
input=subprocess.Popen(['java',l[0]],shell=True,stdin=subprocess.PIPE)
print proc.stdout.read()
请指出错误或告诉我一个新的方法。
【问题讨论】:
标签: python input cmd subprocess