运行 条件为真时的另一个 .py 文件
run another .py file when condition is true
我是 Python 的新手,正在尝试使用 Python
在 Raspberry Pi2 中制作一个小项目
目前我有 2 个代码文件 run1.py
和 run2.py
我想在 Project.py
中编写一个 if-else
条件,但我不确定如何正确编写代码....
if (condition is true) ----> run the code from file "run1.py"
else ----> run the code from file "run2.py"
是关于“__main__
”或import os
的主题吗?我也在尝试了解它是如何工作的,但还没有真正理解。
谢谢
如果您只想导入其中一个文件,例如因为它们都有一个名为 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'])
我会推荐这种方式:
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-condition 中。
__name__ == "__main__"
部分阻止条件中的代码在从另一个文件导入时变为 运行,而当文件直接从命令行执行时它变为 运行。
if <condition>:
run1.py
else:
run2.py
如果条件为真,则 run1.py 将 运行。否则 run2.py 将 运行。
希望我能回答你的问题。
我认为 runpy 更好,想象一下你有 25 个 类,它们彼此之间有很大的不同。在您的代码中使用 if 条件在 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()
我是 Python 的新手,正在尝试使用 Python
在 Raspberry Pi2 中制作一个小项目目前我有 2 个代码文件 run1.py
和 run2.py
我想在 Project.py
中编写一个 if-else
条件,但我不确定如何正确编写代码....
if (condition is true) ----> run the code from file "run1.py"
else ----> run the code from file "run2.py"
是关于“__main__
”或import os
的主题吗?我也在尝试了解它是如何工作的,但还没有真正理解。
谢谢
如果您只想导入其中一个文件,例如因为它们都有一个名为 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'])
我会推荐这种方式:
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-condition 中。
__name__ == "__main__"
部分阻止条件中的代码在从另一个文件导入时变为 运行,而当文件直接从命令行执行时它变为 运行。
if <condition>:
run1.py
else:
run2.py
如果条件为真,则 run1.py 将 运行。否则 run2.py 将 运行。
希望我能回答你的问题。
我认为 runpy 更好,想象一下你有 25 个 类,它们彼此之间有很大的不同。在您的代码中使用 if 条件在 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()