Python项目的程序参数传递、添加配置文件、添加shell功能

程序参数传递

  • 给python传递参数
# 给xxx.py传递参数,这里我们传递端口参数和一个框架方法参数
python3 xxx.py port frame:application

需要用到sys模块argv方法(“argv” 即 “argument value” 的简写,是一个列表对象,其中存储的是在命令行调用 Python 脚本时提供的“命令行参数”。)

import sys
if len(sys.argv) == 3:  # 这里传输两个参数,所以是['xxx.py', 'arg1', 'arg2']
    try:
        port = int(sys.argv[1])  
        frame_app_name = sys.argv[2]  # frame:application
    except Exception as ret:
        print("端口输入错误")
        return
else:
    print("请按照以下方式运行:")
    print("python3 xxx.py port frame:application")
    return

如果传递的是一个模块的方法的话

    # frame:application
    ret = re.match(r"([^:]+):(.*)", frame_app_name)  # 按照格式正则匹配到需要的参数
    if ret:
        frame_name = ret.group(1)  # frame
        app_name = ret.group(2)  # application
    else:
        print("请按照以下方式运行:")
        print("python3 xxxx.py port frame:application")
        return
    
    # 这里需要添加一下导入模块的路径,例如frame.py在当前目录的utils目录下
    sys.path.append("./utils")
     
    # import frame_name --->找frame_name.py
    frame = __import__(frame_name)  # 返回值标记导入的这个模板
    app = getattr(frame, app_name)  # 此时app就指向了./utils/frame模块中的application这个函数)

	# 编写好的类来调用
    wsgi_server = WSGIServer(port, app)
    wsgi_server.run_forever()

这时候就初步实现了使用参数的传递

添加配置文件

首先是创建配置文件server.conf,这里输入需要的配置

{
    "static_path": "./static",
    "utils_path": "./utils"
}

然后在刚刚的基础上调用

    # frame:application
    ret = re.match(r"([^:]+):(.*)", frame_app_name)  # 按照格式正则匹配到需要的参数
    if ret:
        frame_name = ret.group(1)  # frame
        app_name = ret.group(2)  # application
    else:
        print("请按照以下方式运行:")
        print("python3 xxxx.py port frame:application")
        return
    
    ### 读取conf配置文件
    with open("./server.conf") as f:
        conf_info = eval(f.read())  # 原来知识单纯的字符串,转化为字典
        
    # 这里需要添加一下导入模块的路径,例如frame.py在当前目录的utils目录下
    sys.path.append(conf_info['utils_path'])
     
    # import frame_name --->找frame_name.py
    frame = __import__(frame_name)  # 返回值标记导入的这个模板
    app = getattr(frame, app_name)  # 此时app就指向了./utils/frame模块中的application这个函数)

	# 编写好的类来调用
    wsgi_server = WSGIServer(port, app, conf_info['static_path'])
    wsgi_server.run_forever()

添加shell功能

如果在使用的时候,重复输入

# 给xxx.py传递参数,这里我们传递端口参数和一个框架方法参数
python3 xxx.py port frame:application

就稍微有点麻烦了,这里可以将语句一起写在.sh文件里(例如run.sh), 然后一起运行即可

  • 注:刚创建的.sh文件可能没有x执行属性,这里需要加上权限
# 加上权限
chmod +x run.sh
# 查看权限
ls -lh
# 运行
./run.sh

另: 环境配置的话可以一并写在里面,方便给别人使用

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值