Как мне вызвать один Python файл из другого Python файла? - PullRequest
0 голосов
/ 16 апреля 2020

Итак, у меня есть несколько Python файлов, каждый из которых представляет собой свое собственное консольное приложение, предоставляющее пользователю несколько вариантов. file1.py, file2.py, file3.py et c.

У меня есть еще один файл с именем menu.py. В этом файле я хочу предложить пользователю возможность запустить один из других python файлов, т.е.

option = input("Enter file name to run: ")
if option == "file1": #Code to open file

Мой код будет намного чище, но, надеюсь, вы понимаете, что я пытаюсь добраться до.

Ответы [ 4 ]

0 голосов
/ 16 апреля 2020

Добавление к ответу Jo sh.

Для наиболее чистого решения вы должны использовать операторы import для извлечения кода из другого файла. Способ достижения этого заключается в том, чтобы каждый файл имел основную функцию, которая будет служить интерфейсом. Кроме того, я также рекомендую использовать argparse, если файлы являются программами командной строки.

Если за один раз вызывается только один файл, программа может выглядеть примерно так:

import argparse

import file1
import file2

parser = argparse.ArgumentParser(description='Run some files')
parser.add_argument('--file', type=str, dest='file', help='file name', required=True)
parser.add_argument('--options', dest='options', nargs='+')

args = parser.parse_args()

print(args.file)

if args.file == 'file1':
    if args.options:
        file1.main(*args.options)
    else:
        file1.main()
elif args.file == 'file2':
    if args.options:
        file2.main(*args.options)
    else:
        file2.main()

file1.py может выглядеть так:


def main(*options):
    print('File 1', options)

И вы называете это так: python3 menu.py --file file1 --options option1 option2

0 голосов
/ 16 апреля 2020

Я полагаю, что вы ищете os.system()

Вы можете запустить команду с помощью

command = 'python3 file1.py'
os.system(command)
0 голосов
/ 16 апреля 2020

Этот ответ относится к @balpha и @fantastory.
Если вы используете Python 2, используйте

execfile("test2.py")

Если используете Python 3, используйте

exec(open("test2.py").read())

Вы также можете захотеть увидеть документы о том, как обрабатываются пространства имен.

0 голосов
/ 16 апреля 2020

Используйте import операторы для запуска кода из другого python файла:

import file1

option = input("Enter file name to run: ")
if option == "file1":
    file1.some_function()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...