将 --port 参数发送给 python

问题描述 投票:0回答:3

我有这个代码:

#!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 和端口而不是硬代码。

python python-3.x
3个回答
3
投票

你的脚本有很多问题。但我只是来回答你的问题。

argparse 模块可以轻松编写用户友好的命令行界面。该程序定义了它需要什么参数,argparse 将找出如何从 sys.argv 中解析这些参数。 argparse 模块还会自动生成帮助和使用消息,并在用户向程序提供无效参数时发出错误。

Python 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'] 是一个字符串


1
投票

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)

0
投票

使用

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
© www.soinside.com 2019 - 2024. All rights reserved.