我想用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的授权。
但为什么它会占用参数字符串的相对路径?
感谢您的回答
答案 0 :(得分:0)
我能想到两种方法:
使用exec形式指定工作目录:
String[] args = {pyScript, ARGS};
Process p = Runtime.getRuntime().exec(
PYLOCATION,
args,
new File("G:\....."))