条件为true时运行另一个.py文件

时间:2015-12-13 14:15:44

标签: python if-statement raspberry-pi python-import

我是Python的新手,并尝试使用Python在Raspberry Pi2中创建一个小项目

目前我有2个代码文件run1.pyrun2.py

我想在if-else中写一个Project.py条件,但我不确定如何正确编写代码....

if (condition is true) ----> run the code from file "run1.py"
else ----> run the code from file "run2.py"

是关于' __main__'的主题?还是import os?我试图理解它是如何工作的,但还没有真正理解。

谢谢

4 个答案:

答案 0 :(得分:4)

如果您只想导入其中一个文件,例如因为它们都有一个名为foo的函数,并且您想在运行时选择其中一个,则可以执行以下操作:

if condition:
    import fileA as file
else:
    import fileB as file
file.foo()

如果您确实需要启动文件(它们是独立程序),您可以这样做:

import subprocess
if condition:
    subprocess.call(['python', 'fileA.py'])
else:
    subprocess.call(['python', 'fileB.py'])

答案 1 :(得分:0)

我会这样推荐:

main.py

import first, second
if __name__ == "__main__":
  if foo:
    first.main()
  else:
    second.main()

first.py:

def main():
  do_something()
if __name__ == "__main__":
  main()

second.py(就像first.py)

然后,您可以从命令行调用first.py / second.py并运行其代码。如果你导入它们(import first, second)它们什么都不做,但是你可以调用它们的(主要)方法,即你的if-else条件。

__name__ == "__main__"部分阻止条件中的代码从另一个文件导入时运行,而当文件直接从命令行执行时运行。

答案 2 :(得分:0)

我认为runpy更好,假设您有25个班级,并且它们彼此之间有显着差异。如果您的代码中有条件,则要在25左右的位置制作25个import语句,这是不好的。

Folder:.
    preA.py
    preB.py
    preC.py
    preD.py
    test.py

您可以使用节省时间并保留干净代码的功能

import runpy

def call_f(filename):

    return runpy.run_path(filename , run_name='__main__')

#Call the function, since we are using run_path we have to specify the extension
#You can also use modules and you should use runpy.run_module
res = call_f('preA.py')

print(res['res'])
#>> 0

预处理文件如下所示:

def preproc():

    print('I am A preprocessing, different from any other type of preprocessing')

    return 0

if __name__ == '__main__':

    res =  preproc()

答案 3 :(得分:-1)

if <condition>: 
    run1.py
else:
    run2.py

如果condition为true,则run1.py将运行。否则run2.py将运行。

我希望我回答你的问题。