我有一个 python“client.py”脚本,如下所示:
import sys
import traceback
import client_new
import subprocess
def main():
print "inside client"
subprocess.Popen('C:/client_new.py',shell=True)
#execfile('client_new.py')
if __name__ == "__main__":
is_sys_exit = False
ret_val = 0
try:
ret_val = main()
except SystemExit:
is_sys_exit = True
except:
if not is_sys_exit:
print( traceback.format_exc() )
if sys.version_info < ( 3,0 ):
raw_input( "Press return to continue" )
else:
input( "Press return to continue" )
sys.exit( 1 )
if is_sys_exit:
print( "SystemExit Exception was caught." )
sys.exit( ret_val )
client_new.py脚本如下:
import traceback
def main():
print "inside client new"
if __name__ == "__main__":
is_sys_exit = False
ret_val = 0
try:
ret_val = main()
except SystemExit:
is_sys_exit = True
except:
if not is_sys_exit:
print( traceback.format_exc() )
if sys.version_info < ( 3,0 ):
raw_input( "Press return to continue" )
else:
input( "Press return to continue" )
sys.exit( 1 )
if is_sys_exit:
print( "SystemExit Exception was caught." )
sys.exit( ret_val )
因此,从 client.py 中,有另一个脚本 client_new.py 被使用子进程调用,但是当执行 client.py 时,它只打印其数据,而不显示 client_new 的打印。因此,我不明白我对 client_new.py 的调用做错了什么。请帮助我缺少什么。
最佳答案
只要它们都在同一个目录中(或者它们在 python 查找的目录中(我相信称为 PYTHONPATH)),则相对简单。要导入 python 文件,只需删除 .py 并导入即可。因此您只需要以下代码。
import client_new
#Write rest of the code here
client_new.run_function()
您还需要稍微更改 client_new 中的代码才能使其正常工作。
import traceback
def main():
print "inside client new"
def run_function():
is_sys_exit = False
ret_val = 0
try:
ret_val = main()
except SystemExit:
is_sys_exit = True
except:
if not is_sys_exit:
print( traceback.format_exc() )
if sys.version_info < ( 3,0 ):
raw_input( "Press return to continue" )
else:
input( "Press return to continue" )
sys.exit( 1 )
if is_sys_exit:
print( "SystemExit Exception was caught." )
sys.exit( ret_val )
if __name__ == "__main__": #This is only run if called as an external script.
run_function()
关于python - 如何从不同的Python脚本调用Python脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40506972/