IPython在读取文件时引发异常

IPython在读取文件时引发异常,python,ipython-notebook,Python,Ipython Notebook,我成功地用Python运行了这个脚本,但是IPython笔记本抛出了一个异常。 有什么问题吗 import os from subprocess import call, Popen, PIPE, STDOUT command = "java -cp \"C:\mallet-2.0.7\class;C:\mallet-2.0.7\lib\mallet-deps.jar\" cc.mallet.fst.SimpleTagger --train true --model-file nouncrf

我成功地用Python运行了这个脚本,但是IPython笔记本抛出了一个异常。 有什么问题吗

import os
from subprocess import call, Popen, PIPE, STDOUT

command = "java -cp \"C:\mallet-2.0.7\class;C:\mallet-2.0.7\lib\mallet-deps.jar\" cc.mallet.fst.SimpleTagger --train true --model-file nouncrf train.txt"
p = Popen(command, stdout=PIPE, stderr=STDOUT, shell = True)

for line in p.stdout:
     print line


Exception in thread "main" java.io.FileNotFoundException: train.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at cc.mallet.fst.SimpleTagger.main(SimpleTagger.java:504)
导入操作系统
来自子流程导入调用、Popen、管道、STDOUT
command=“java-cp\”C:\mallet-2.0.7\class;C:\mallet-2.0.7\lib\mallet deps.jar \“cc.mallet.fst.SimpleTagger--train true--模型文件nouncrf train.txt”
p=Popen(命令,stdout=PIPE,stderr=stdout,shell=True)
对于p.stdout中的行:
打印行
线程“main”java.io.FileNotFoundException:train.txt中出现异常(系统找不到指定的文件)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(未知源)
位于java.io.FileReader。(未知源)
位于cc.mallet.fst.SimpleTagger.main(SimpleTagger.java:504)

显然,这个问题与Python完全无关,因为它是Java例外,而不是Python例外。最可能的情况是,在当前目录中查找文件(
train.txt
)。在Python中运行脚本时,当前目录可能与IPython中的目录不同。Java程序能够接受绝对文件路径吗?如果是,您可以在Java程序的命令行中指定绝对路径。

其中是
train.txt
?您的
os.getcwd()
的打印输出是什么?IPython并没有抛出异常,它只是报告来自它被告知要运行的Java程序的错误。此外,建议您对Windows文件名使用原始字符串常量(或至少将反斜杠加倍,这样就不会有将其解释为字符串转义的风险)。该错误意味着这两种环境中存在一些差异,但我们无法真正告诉您这可能是什么。