Как использовать pathlib вместе с подпроцессом - PullRequest
0 голосов
/ 30 января 2019

Я хотел бы использовать относительные пути вместе с модулем подпроцесса, чтобы иметь возможность запускать разные исполняемые файлы.

Для получения относительных путей и, после прочтения различных потоков, я думаю, что модуль pathlib - лучший вариант длясделайте это.

Предположим, у меня есть скрипт Python в определенной папке в Windows.Внутри него (в предыдущей папке) у меня есть другие папки с исполняемыми файлами, которые я хочу запустить.Вот когда приходит модуль подпроцесса. Однако я не знаю, как включить относительные пути, созданные с помощью модуля pathlib, в поле args подпроцесса.

Из API подпроцесса я могу прочитать, что аргументы должны быть последовательностьюпрограммные аргументы или еще одна строка '.

import pathlib
import subprocess

in_file_1 = pathlib.Path.cwd() / "folder2" / "folder3" / "whatever.exe"

p = subprocess.Popen(str(in_file_1), shell = True)

Я ожидал бы увидеть процесс what.exe, выполняющийся на задачах администратора, но этот процесс не запущен.Как я могу этого достичь?Есть ли что-то, что я пью?Должен ли я просто указать относительный путь, из которого сохранен скрипт Python?

1 Ответ

0 голосов
/ 30 января 2019

Вы путаете c urrent w orking d irectory , который возвращает pathlib.Path.cwd(), с расположением скрипта.

Если вам нужен каталог сценария, вы можете использовать __file__, например, так:

import pathlib

cwd = pathlib.Path.cwd()
script_file = pathlib.Path(__file__)
script_location = script_file.parent

print("The current dir is", pathlib.Path.cwd())
print("The current script is", script_file)
print("The current script's dir is", script_file.parent)

, который вернет:

The current dir is /home/nicoco
The current script is /tmp/so.py
The current script's dir is /tmp
...