程序参数传递
- 给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
另: 环境配置的话可以一并写在里面,方便给别人使用