由Java触发的Python中的文件处理

时间:2017-12-31 16:39:19

标签: java python windows

我想用Python脚本自动完成一些任务。 基本应用程序是用Java编写的。 要使用

来触发Python的东西
 Process p = Runtime.getRuntime().exec(PYLOCATION + " " + pyScript + " " + ARGS)

所以首先我只想尝试在python脚本上创建一个目录:

#! python3
import sys,shelve,os

filename = 'log.txt'
logfile = open(filename,'w')
path = sys.argv[1]
path = os.path.abspath(path)
logfile.write(str(path))
logfile.close()

if not os.path.exists(path):
   os.mkdir(path)

如果我将新目录的路径作为绝对路径传递,如

static final String ARGS = "G:\\SNMP_Tool\\PythonScripts\\defaultDataBase";

一切正常

如果我相对传递它

static final String ARGS = "..\\PythonScripts\\defaultDataBase";
它很有效。 (如果我直接在python脚本中输入相对路径的字符串就可以了)

如果任务从Java App开始,则永远不会写入logfile log.txt。

如果我只是用鼠标两次点击.py脚本,就会按原样写入日志文件。

我认为编写文件的问题可能是来自windows的授权。

但为什么它会占用参数字符串的相对路径?

感谢您的回答

1 个答案:

答案 0 :(得分:0)

我能想到两种方法:

  1. 在Java脚本中,在将文件传递给Python脚本之前将其解析为绝对路径,或者
  2. 使用exec形式指定工作目录:

    String[] args = {pyScript, ARGS};
    Process p = Runtime.getRuntime().exec(
            PYLOCATION,
            args, 
            new File("G:\....."))