我有这个代码:
#!flask/bin/python
import subprocess
import types
from flask import Flask, jsonify, make_response, abort, request, url_for
app = Flask(__name__)
@app.route('/v1/kill/process/<processName>')
def killProcess(processName):
pid = subprocess.Popen(["pidof", processName], stdout=subprocess.PIPE)
pid = pid.stdout.read()
if len(pid) != 0:
for p in pid.decode("utf-8").split(" "):
p = int(p)
subprocess.call(["kill","-9", str(p)])
return make_response(jsonify({'error': False}), 200)
else:
return make_response(jsonify({'error': "Service Not Found"}), 400)
if __name__ == '__main__':
app.run(debug=True, port=8888)
我想像这样运行这段代码:
u200du200du200du200d
python fileName.py --port 8888
,
如何将 --port 参数发送给 python 和端口而不是硬代码。
你的脚本有很多问题。但我只是来回答你的问题。
argparse 模块可以轻松编写用户友好的命令行界面。该程序定义了它需要什么参数,argparse 将找出如何从 sys.argv 中解析这些参数。 argparse 模块还会自动生成帮助和使用消息,并在用户向程序提供无效参数时发出错误。
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Description of your program')
parser.add_argument('-p','--port', help='Port_number', required=True)
args = vars(parser.parse_args())
app.run(debug=True, port=args['port'])
args['port'] 是一个字符串
Python 运行时,参数以数组形式传入
sys.argv
。
您可以通过以下两种方式之一来完成此操作。您可以使用内置的
argparse
模块,也可以直接访问 sys.argv
。
使用
argparse
:
import argparse
parser = argparse.ArgumentParser(description='Run flask program')
parser.add_argument(
'--port',
action='store',
dest='port',
type=int,
default=8888,
metavar='PORTNUM',
help='set port number')
args = parser.parse_args()
print(args.port)
直接使用
sys.argv
:
import os
import sys
port = 8888 # default value
reversed_args = list(reversed(sys.argv[1:]))
while True:
if not len(reversed_args):
break
if reversed_args[-1] == '--port':
reversed_args.pop()
if not len(args):
sys.exit(127)
path = int(reversed_args.pop())
else:
sys.exit(127)
print(port)
使用
argparse
:
import argparse
def parse_arguments():
parser = argparse.ArgumentParser(description='Run the application.')
parser.add_argument('--port', type=int, default=3000, help='Port to run the server on')
return parser.parse_args()
args = parse_arguments()
port = args.port
app.run('0.0.0.0', port)
print("Server is running on port:", port)
然后你可以这样运行:
python main.py --port=5000