如何从另一个Python文件调用一个Python文件?

时间:2020-04-16 18:06:16

标签: python pycharm

因此,我有多个Python文件,每个文件都是它们自己的控制台应用程序,为用户提供了多个选项。 file1.py,file2.py,file3.py等。

我还有另一个名为menu.py的文件。在此文件中,我想为用户提供运行其他python文件之一的选项,即

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

我的代码比这要干净得多,但是希望您理解我要达到的重点。

3 个答案:

答案 0 :(得分:0)

我相信您正在寻找os.system()

您可以通过以下方式运行命令

command = 'python3 file1.py'
os.system(command)

答案 1 :(得分:0)

此答案归因于@balpha和@fantastory。
如果您使用的是Python 2,请使用

execfile("test2.py")

如果使用Python 3,请使用

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

您还可能希望了解docs关于如何处理名称空间的信息。

答案 2 :(得分:0)

添加到乔什的答案中。

对于最干净的解决方案,您应该使用import语句从另一个文件中提取代码。实现此目的的方法是使每个文件都具有充当接口的主要功能。另外,如果文件是命令行程序,我也建议使用argparse。

如果一次只调用1个文件,则程序可能类似于:

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