line = bufferedReader.readline()改为python
时间: 2024-02-12 17:04:33 浏览: 56
可以使用Python内置的input()函数来读取用户的输入,例如:
```python
line = input()
```
这个语句将等待用户在控制台输入一行内容,然后将其存储在变量line中。
相关问题
public void initGrammar(BufferedReader bufferedReader){ String line = ""; try { line = bufferedReader.readLine(); String[] temp = line.split(" "); Global.NotTerminal.add(temp[0]); Production sproduction = new Production(temp[0]); for(int i = 2;i<temp.length;i++){ Global.Terminal.add(temp[i]); sproduction.right.add(temp[i]); } Global.productionList.add(sproduction); Global.start = temp[0]; while ((line = bufferedReader.readLine()) != null){ temp = line.split(" "); Global.NotTerminal.add(temp[0]); Production production = new Production(temp[0]); for(int i = 2;i<temp.length;i++){ Global.Terminal.add(temp[i]); production.right.add(temp[i]); } Global.productionList.add(production); } Global.Terminal.removeAll(Global.NotTerminal); }catch (Exception e){ e.printStackTrace(); } }转python
以下是将该Java方法转换为Python函数的示例代码:
```python
def initGrammar(bufferedReader):
line = ""
try:
line = bufferedReader.readline()
temp = line.split(" ")
Global.NotTerminal.add(temp[0])
sproduction = Production(temp[0])
for i in range(2, len(temp)):
Global.Terminal.add(temp[i])
sproduction.right.add(temp[i])
Global.productionList.add(sproduction)
Global.start = temp[0]
while line:
line = bufferedReader.readline()
if not line:
break
temp = line.split(" ")
Global.NotTerminal.add(temp[0])
production = Production(temp[0])
for i in range(2, len(temp)):
Global.Terminal.add(temp[i])
production.right.add(temp[i])
Global.productionList.add(production)
Global.Terminal.difference_update(Global.NotTerminal)
except Exception as e:
print(e)
```
在这个Python函数中,我们使用了类似于Java方法的结构。我们首先定义了一个变量`line`,并设置为空字符串。然后,我们使用`try-except`语句块来捕获可能发生的异常。
在`try`块中,我们首先读取`bufferedReader`对象中的第一行,并将其拆分为一个非终结符和一系列终结符。然后,我们将这些符号添加到全局符号表中,并创建一个产生式对象,将其左部设置为该非终结符,并将其右部设置为这些终结符。接着,我们将该产生式对象添加到全局产生式列表中,并将该非终结符设置为起始符号。
接下来,我们使用一个`while`循环来读取每一行,并重复上述过程,将每个新的产生式对象添加到全局产生式列表中。最后,我们从全局终结符集合中删除所有的非终结符。
与Java方法不同的是,我们在Python函数中使用了`range()`函数来生成一个范围,以便迭代字符串中的每个元素。此外,我们使用了`Global.Terminal.difference_update()`方法来删除非终结符。
//工作目录 String Path = System.getProperty("user.dir"); String pyCodePath = Path + "\\python\\pyCode\\routeplanning\\train.py"; String pyPath = Path + "\\python\\pyCode\\python37\\python.exe"; String w1 = "3"; String[] args1 = new String[]{pyPath, pyCodePath,w1}; String result1 = null; System.out.println("Start");//开始 try { // 执行Python文件,并传入参数 Process process = Runtime.getRuntime().exec(args1); // 获取进程的错误输出流 BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream())); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); String actionStr = in.readLine(); if (actionStr != null) { System.out.println(actionStr); } in.close(); process.waitFor(); String line; while ((line = errorReader.readLine()) != null) { System.err.println(line); } } catch (IOException e) { throw new RuntimeException(e);//返回错误信息
根据你提供的代码,你正在使用Java调用Python脚本,并向脚本传递参数。根据错误信息 "error: unrecognized arguments: 3",这个错误通常是由于传递的参数不被Python脚本所识别造成的。
首先,请确保你的Python脚本能够接收并正确处理参数。在你的Python脚本中,你需要使用 `argparse` 或类似的方式来解析命令行参数。例如:
```python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("w1", help="Some argument")
args = parser.parse_args()
# 在这里使用 args.w1 处理参数
```
其次,请确保你的Java代码中传递参数的方式是正确的。根据你的代码,你将参数 `w1` 作为数组 `args1` 的一个元素进行传递。请确保这个参数在你的Python脚本中能够正确接收。
如果你已经按照上述步骤进行了操作,但仍然遇到问题,请提供更多详细信息,比如完整的Python脚本和Java代码,以及你期望的预期结果。这样我可以更具体地帮助你解决问题。
阅读全文