#java #python
Вопрос:
В настоящее время я программирую скрипт на Python, который открывает файл в другом каталоге, который пользователь вводит в поле ввода. Все работает нормально, но файл jar, который я использовал для тестирования, не запускается и не отображается. Я использую Shimeji-ee.jar во время тестирования, и в какой-то момент его значок в трее появился, но сразу же исчез.
Я попытался запустить его в командной строке(поскольку вызов файла jar с помощью сценария аналогичен запуску файла в CMD) и обнаружил, что он запускается только до тех пор, пока открыто окно CMD. Несколько поисков спустя я нашел способ запускать файлы в CMD, который поддерживает его работу даже после закрытия CMD. Я написал это в своем сценарии, без ошибок, но Shimeji и его значок в трее больше никогда не появляются.
Я добавил строку в конце своего сценария, которая также считается эффективным способом поддержания работы сценария, но она также не работает(здесь может быть еще одна ошибка).:
while True:
keyboard.wait('q')
if keyboard.is_pressed:
sys.exit()
Вот строка кода в моем скрипте, которая выполняет вызов:
subprocess.run(['D:', 'cd', PurePath(fileDirectory), 'START', '""', fileToExecute], cwd=os.getcwd(), shell=True)
Код, который я выучил, заставляет файл работать в фоновом режиме(аналогично добавлению amp; в терминале Linux):
START "" program
У меня были мысли, что проблема может быть в файле jar, который я использую, но я уже несколько часов не находил ответов. Есть ли что-то не так с кодом или я что-то упускаю?
Обновление: Код, наконец, сработал после первого ответа, но я получил сообщение об ошибке, которое, казалось, считывало файл как двойную косую черту, как это:
# The network path was not found //
или
# The system could not find the file //
Решение, которое я нашел, состояло в том, чтобы просто удалить '""'
часть кода, которая делает код похожим на это:
subprocess.run(['START', fileToExecute], cwd=PurePath(fileDirectory), shell=True)
Ответ №1:
Проблема в том, что ваш код:
subprocess.run(['D:', 'cd', PurePath(fileDirectory), 'START', '""', fileToExecute], cwd=os.getcwd(), shell=True)
выполняет команду D:
с аргументами cd somedirectory START "" fileToExecute
, которая изменяет текущий диск оболочки на D
диск, а затем завершает работу.
Вы, вероятно, хотите выполнить
subprocess.run(['START', '""', fileToExecute], cwd=PurePath(fileDirectory), shell=True)