Python临时目录执行其他进程?

时间:2016-03-05 01:57:39

标签: python temp

我在Python中有一串Java源代码,我想编译,执行和收集输出(stdout和stderr)。不幸的是,据我所知,javacjava需要真实的文件,所以我必须创建一个临时目录。

最好的方法是什么? tempfile模块似乎面向创建只对Python进程可见的文件和目录。但在这种情况下,我需要Java才能看到它们。但是,我还希望尽可能智能地处理其他内容(例如在完成时删除文件夹或使用适当的系统临时文件夹)

2 个答案:

答案 0 :(得分:5)

removing availability settempfile.NamedTemporaryFile完全适合您的目的。生成的对象具有.name属性,该属性提供java / javac可以正常处理的文件系统可见名称,只需确保:

  1. 如果编译器坚持使用suffix扩展名命名的文件
  2. ,请相应地设置.java
  3. 在将.flush()的{​​{1}}移交给外部流程之前,始终在文件句柄上调用.name,否则它可能(通常会)看到不完整的文件
  4. 如果您不希望Python在关闭对象时清理文件,请将NamedTemporaryFile传递给delete=False的构造函数,或使用NamedTemporaryFilemkstemp函数(创建对象,但不要为你清理它们)。

    例如,您可以这样做:

    mkdtemp

答案 1 :(得分:2)

"BulkSMS" to "Bulk SMS" "BULKSMS" to "BULK SMS" "BulkSMSs" to "Bulk SMSs" "bulksms´s" to "bulk sms´s" "bulkSMS(dot)com" to "bulk SMS(dot)com" "bulksms@domain.com" to "bulk sms@domain.com" ... 创建一个通常在文件系统中可见的文件,并返回路径。您应该可以使用它来创建输入和输出文件 - 假设tempfile.mkstemp将自动覆盖输出文件(如果存在),如果系统上的其他进程没有出现异常,则应该没有竞争条件。< / p>