как открыть файл, предоставив внешнюю команду внутри вызова подпроцесса в python?

#python #command #wrapper

Вопрос:

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

 execute_cmd("python sample.py")
 

Здесь execute_cmd метод принимает команду «python sample.py» в качестве аргумента и используйте его для извлечения сообщения об ошибке . Вместо того, чтобы давать ‘sample.py’, Я хочу указать путь к любому файлу.
Как я могу это сделать? Или есть какой-то другой способ сделать это?

Комментарии:

1. Как насчет использования sys.argv?

Ответ №1:

Предположим , у вас есть wrapper.py , вы можете попробовать что-то вроде этого:

 import sys
import subprocess

subprocess.run(["python", sys.argv[1]])
 

и ты называешь это так:

 python wrapper.py filename.py
 

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

параметр pycharm

Однако я не думаю, что в pycharm есть функция, которая каждый раз запрашивает у вас новые параметры, поэтому вам нужно настроить в самом низу, чтобы диалоговое окно отображалось при каждом запуске

выставка pycharm

Комментарии:

1. это работает для командной строки. Как насчет запуска его в среде IDE?

2. Как ваша среда разработки запускает сценарий-оболочку?

3. Я использую Pycharm community edition 2021.2, я не знаю, как он запускает сценарий-оболочку

4. Указание параметра в конфигурациях по-прежнему означает, что я как бы правильно его закодировал. Мое имя файла вводится пользователем в виде абсолютного пути к файлу. @JechChua

5. Другого выхода нет. Как ваш скрипт может узнать, какой файл запускать?