在 Python 中使用 subprocess.Popen() 通过 Java 程序打开文件

Opening a File through a Java program using subprocess.Popen() in Python

这是我第一次 post 来这里,我来这里是因为我遇到了一个非常大的障碍,经过日复一日的尝试研究可能的答案,我很遗憾简而言之。我也是大约2周前才开始学习如何编程,所以如果我说错了,请提前原谅我。 :^)

所以这就是症结所在:我正在尝试使用 Java 程序(.jar 文件)通过Python 我创建的脚本。起初,我无法使用脚本打开文件,但在使用 Unix 可执行文件创建 Apple .app 文件后,我终于(!)能够这样做,然后我可以打开 .jar 文件,就好像它是一个.app 文件。现在,我可以单独使用我的脚本打开程序,但我也无法使用该程序打开保存文件。这是我目前正在使用的代码:

import subprocess
import time

File = (absolute path to Save File)
Editor = (absolute path to Program)

a = subprocess.Popen([Editor, File], stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE)

time.sleep(10)

a.terminate()

此代码为我打开程序,等待 10 秒,然后完美地关闭程序。但出于某种原因,我似乎无法找到打开文件的方法!我试过 subprocess.run(),玩输入,但它不会工作。我已经使用电子表格和 Excel、文本文档和 Word 测试了代码,它们工作正常。

我假设我遗漏了一段我必须告诉计算机该文件确实是我想用程序打开的文件,但我一直无法找到编写的样式那。

任何帮助将不胜感激!先感谢您。 :D

(在 macOS Big Sur 计算机上工作。)

文件无法首先打开的原因可能有多种

  1. 尝试subprocess.Popen在终端上调用的命令。 如果它有效而不是 python 是问题如果不是错误的路径或权限问题

如果问题是 python,您可以尝试这样的方法:

import subprocess
import time

File = (absolute path to Save File)
Editor = (absolute path to Program)

a = subprocess.Popen(f"./{Editor} {File}", shell=True, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE)

time.sleep(10)

a.terminate()

我找不到使用 subprocess.Popen() 打开带有文件的程序的方法,所以我想我必须找到一种方法来打开它。我能够使用 PyAutoGUI 做到这一点!

https://pyautogui.readthedocs.io/en/latest/

如果您需要繁琐地单击很多东西,强烈推荐。