gpt4 book ai didi

python - 文件作为可选参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:07 24 4
gpt4 key购买 nike

我是 python 新手,正在开发一个脚本来处理文件以进行一些计算。命令行中的脚本(preprocess.py)调用如下:

python preprocess.py if.txt of.txt 13 13 41 41 52 24 

if.txt 是输入文件,of.txt 是输出文件,(13 13 41 41 52 24) 只是数据组和子组的大小。

在脚本的一部分中,使用两个变量(mean=0 和 std=1)进行计算。

我必须修改脚本,以便脚本接受一个可选参数,一个包含 2 个值(均值和标准差)的文件,这样,如果像上面那样调用脚本,则使用 Mean=0 进行计算和 std=1,但如果像这样调用脚本:

python preprocess.py if.txt of.txt 13 13 41 41 52 24 xxxx.txt 

该脚本获取 xxxx.txt 文件中的两个值,并将每个值保存在其各自的变量中(平均值和标准差)。

脚本现在使用sys.argv[]命令获取参数。我一直在寻找解决这个问题的方法,发现 argparse 模块可以解决它,但我不明白如何从文件中获取值并按预期​​保存它们。

  1. 如何使用 argparse 模块使 xxxx.txt 文件成为可选参数以及如何将该文件中的两个值保存在两个变量(mean 和 std)中?

  2. 如果我使用argparse模块,是否应该使用argparse来获取所有其他参数?如果可以,该怎么做?

PD:我正在学习英语,所以如果我犯了错误,请纠正我。

最佳答案

如果 int 值的数量是固定的,那么这个脚本就可以工作

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('file1')
parser.add_argument('file2')
parser.add_argument('vars', type=int, nargs=3)
parser.add_argument('file3',nargs='?')
print(parser.parse_args())

“?”意味着最后一个参数是可选的。

可以采用可变数量的整数

parser.add_argument('vars', type=int, nargs='+')

但是,2 个变量 nargs 不能一起工作。 '+' 将获取所有内容,而不会为 '?' 留下任何内容。

我建议将该可选文件设置为“可选/标记”参数。这就是通常处理 optional 的方式,并在处理位置时避免这种歧义。

parser.add_argument('--file3')

python preprocess.py if.txt of.txt 13 13 41 41 52 24 --file3 xxxx.txt
<小时/>

argparse方法是检查最后一个sys.argv值。如果它看起来不像 int,则假设它是文件名,并像以前一样继续解析其余部分。

关于python - 文件作为可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24977391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com