我是Python的新手,并尝试使用Python在Raspberry Pi2中创建一个小项目
目前我有2个代码文件run1.py
和run2.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
?我试图理解它是如何工作的,但还没有真正理解。
谢谢
答案 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将运行。
我希望我回答你的问题。