Python脚本随笔-py文件间的调用

脚本运行过程中可能由某个py文件调用另一个py文件,不同于import,调用py文件相当于直接去执行另一个py文件

py文件的调用需要使用sys库和os库

  • 调用并传参数:调用py文件可以使用os.system(file)语句,file为被调用py文件的绝对路径,os.system语句规则如下:

os.system格式为os.system(command % (%s,%i ...))
command 为字符串格式的命令语句,如果需要传递参数,以%s或%i等取代
具体参数如下:
%s    字符串 (采用str()的显示)
%r    字符串 (采用repr()的显示)
%c    单个字符
%b    二进制整数
%d    十进制整数
%i    十进制整数
%o    八进制整数
%x    十六进制整数
%e    指数 (基底写为e)
%E    指数 (基底写为E)
%f    浮点数
%F    浮点数,与上相同
%g    指数(e)或浮点数 (根据显示长度)
%G    指数(E)或浮点数 (根据显示长度)
%后面的括号中依次输入对应参数内容

  • os.system举例:
    def run_parser():
        rootdir = os.path.join(os.getcwd(),"scripts/enum_parser.py")
        rootdir += " %s %s"
        os.system(rootdir %("input_table_define","output_lua_server"))

     

  • 被调用端读取参数:通过sys.argv[]接受参数

此处sys.argv[0]表示代码本身文件路径,不是传递的参数,参数从[1]开始

传递过程中不能传“”空字符串,空字符串不会被传递,需要传“”空字符串时应假定一个特殊字符串传递,在接收端检测到目标字符串时将变量置空

  • 被调用端读取参数举例:
    #参数初始化
    canshu1 = ""
    canshu2 = ""
    output = ""
    if(len(sys.argv) >3):
        output = sys.argv[3]
        if output == "NoVal":
            output == ""
    if(len(sys.argv) >2):
        canshu2 = sys.argv[2]
        if canshu2 == "NoVal":
            canshu2 == ""
    if(len(sys.argv) >1):
        canshu1 = sys.argv[1]
        if canshu1 == "NoVal":
            canshu1 == ""

    首先默认置空,之后判断是否传入了足够的参数防止报错,最后读取参数

  • 文件调用实用测试方法:

os.system语句的返回值可用来判断该语句是否被正确执行,在脚本间相互调用时为每个脚本写print语句很麻烦,利用返回值是否为0可判断是否正确执行

  • 测试方法举例:
    re = os.system(rootdir %(p1,p2,p3))
    if not re == 0:
        print("fail call")
        os.system("pause")

     

 

转载于:https://www.cnblogs.com/Noble-Monster/p/11232444.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值