我想将此字符串编码为python字符串。
字符串示例: “abc \ nbcd” unicode String
p=subprocess.Popen([path],stdout=subprocess.PIPE,stdin=subprocess.PIPE)
p.stdin.write('strings\nstrings')
p.stdin.flush()
output = p.stdout.readline() #output reads from Java
我正在将此输出传递给java程序。
我的java程序将通过Scanner(System.in)
Java程序
Scanner scan = New Scanner(System.in, "UTF-8");
PrintStream out = new PrintStream(System.out, True, "UTF-8");
System.setOut(out);
while (true)
{
while(in.hasNextLine())
{
//do processing
//splitting this up. The output would be an array
//method to combine the array elements to a string.
System.out.println(output);
}
}
如果我有许多必须按顺序处理的文件,则会出现此问题。会发生什么,缓冲区将被填充,并将出现死锁。
所以基本上我正在寻找的是一种解决方案,“abc \ ncde”可以被视为一行而不是两行。
好吧,我正在尝试将一些unicode字符串标记出来。
工作流
从文件中读取字符串(可以有多个字符串)。将它们传递给Java引擎以进行标记化。将标记化字符串作为由“\ k”(任意分隔)分隔的单个字符串返回。使用字符串生成器组合标记化标记并在python中再次将它们拆分。
这是问题所在。从stdout读取时,并非所有令牌都从流中刷出,而有些则留在stdout中导致死锁情况。
因此,我的代码。
当流已满时, p.stdin.write(txt)
挂起。