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

问题描述 投票:0回答:1

我想用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的授权。

但为什么不采用参数字符串的相对路径?

谢谢你的回答

java python windows
1个回答
0
投票

我能想到两种方法:

  1. 在Java脚本中,在将文件传递给Python脚本之前将文件解析为绝对路径,或者
  2. 使用exec形式指定工作目录: String[] args = {pyScript, ARGS}; Process p = Runtime.getRuntime().exec( PYLOCATION, args, new File("G:\....."))
© www.soinside.com 2019 - 2024. All rights reserved.