如何处理可能是一个值或多个值的输入参数? - python

我正在使用有人编写的来自GitHub的脚本,该脚本是为命令行设计的。所有示例均显示如下内容:

thisscript.py -u 'teepee' -p pword999 -d 8

我想在另一个函数中运行它,在这里我可以像这样使用它:

thisscript(username='teepee', password='pword999',...)

主文件包括许多class定义和此主函数(如下)。包装此函数以便可以将其称为自己的函数的正确方法是什么?

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='...', add_help=False, usage='thisscript.py -u username -p password [options]')
    parser.add_argument('-u', metavar='<STR>', type=str, help='username')
    parser.add_argument('-p', metavar='<STR>', type=str, help='password')
    parser.add_argument('-a', metavar='<INT>', type=int, default=4, help='Number ascending [4]')
    parser.add_argument('-d', metavar='<INT>', type=int, default=0, help='Number descending [0]')

我尝试做import thisscript,但这似乎不起作用。

参考方案

我认为最简单的解决方案是使用subprocess模块以在外壳中按设计方式调用脚本。

import subprocess

def transcript(
        username, 
        password, 
        descending_num=0, 
        ascending_num=4,
        ):

    command = f'transcript.py -u {username} -p {password} -d {descending_num} -a {ascending_num}'
    subprocess.call(command, shell=True)

赋予function关键字参数以反映脚本的默认参数是可选的,但使用法更清晰。

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

如何用'-'解析字符串到节点js本地脚本? - python

我正在使用本地节点js脚本来处理字符串。我陷入了将'-'字符串解析为本地节点js脚本的问题。render.js:#! /usr/bin/env -S node -r esm let argv = require('yargs') .usage('$0 [string]') .argv; console.log(argv…

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Matplotlib'粗体'字体 - python

跟随this example:import numpy as np import matplotlib.pyplot as plt fig = plt.figure() for i, label in enumerate(('A', 'B', 'C', 'D')): ax = f…