即使没有这样编写,生成文件和.write也会发生在.call之后

时间:2017-04-03 19:30:12

标签: python python-3.x subprocess

我正在尝试通过python传递一个java文件,并将shell输出写入log .txt文件。这是有效的,只是我的手动中断被添加到文件的末尾。关于.write subprocess.call之后发生import subprocess outfile = open('c:\\log2.txt', 'a') outfile.write("\n\n") outfile.write("-------------------------BEGIN NEW LOG--------------------------------------") outfile.write("\n\n") subprocess.call(['java.exe', '-cp', 'c:\\dev\\dataloader\\dataloader-36.0.0-uber.jar', '-Dsalesforce.config.dir=c:\\dev\\dataloader\\', 'com.salesforce.dataloader.process.ProcessRunner', 'process.name=csvCRExtract'], stdout=outfile) outfile.close() 的原因的任何建议?我是Python的新手。感谢

代码段

tf.nn.rnn_cell.LSTMStateTuple

1 个答案:

答案 0 :(得分:0)

output.flush()之前致电subprocess.call()

output正在使用缓冲的i / o,这意味着它在实际将数据写入操作系统之前等待直到写入最少量的数据,以避免大量慢速系统写入调用。 flush告诉缓冲区立即将所有内容发送到操作系统。您的计划正在执行以下操作:

  • 将日志标头写入本地缓冲区
  • 调用您的java进程,该进程写入自己的缓冲区,然后在进程退出时调用该文件
  • close文件时将本地缓冲区刷新到文件中。

这个答案有一张图片并对其进行了解释:

https://stackoverflow.com/a/1450563/47078