python - 如何从不同的Python脚本调用Python脚本?

标签 python python-2.7 subprocess

我有一个 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/

相关文章:

python mysql 获取查询

python - 在 openpyxl 中保留原始单元格格式

linux - google-cloud-sdk 安装在 CentOS/usr/local/bin 中找不到正确的 Python 2.7 版本

python - 一定时间后中断功能

python - 如何在python子进程中指定图像输出的尺寸?

python - 计算多个 pandas 列中出现的次数

python - Chrome Webdriver 无法完成产品结帐自动化

Python:由(不同的)n个空格分割

python - OpenCV 错误 : Assertion failed (L. channels() == 1 && I.channels() == 1) in connectedComponents_sub1

scala - 在 Scala 中将外部命令作为子进程调用