Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python argparse停止工作_Python_Argparse - Fatal编程技术网

python argparse停止工作

python argparse停止工作,python,argparse,Python,Argparse,我有一段非常好的代码,使用argparse。我已经在工作中使用了几个月,没有任何问题。下面是一个排泄物 import argparse import sys import math import random # Setup command line arguments parser = argparse.ArgumentParser(description='RF Profile Generator', formatter_class=argparse.ArgumentDefaultsHel

我有一段非常好的代码,使用argparse。我已经在工作中使用了几个月,没有任何问题。下面是一个排泄物

import argparse
import sys
import math
import random

# Setup command line arguments
parser = argparse.ArgumentParser(description='RF Profile Generator', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-o', dest='OutputFile', help='Output filename', required=True, type=argparse.FileType('w', encoding='utf-8'))
parser.add_argument('-a', dest='APPositions', nargs='+', type=float, help='Trackside AP position(s)', required=True)
parser.add_argument('-l', dest='TotalTrackLength', type=float, help='Length of the track (m)', required=True)
parser.add_argument('-p', dest='AttenuatorAddr', nargs='+', help='Programmable attenuator IP address(es)', required=True)

input("A")
# parse the command line arguments
# the parsed values will be stored in the corresponding variables defined by 'dest'
args = parser.parse_args()
input("B")
#More code to follow
但是,今天我用以下参数运行代码(我一直在这么做):

控制台输出告诉我

"error: the following arguments are required: -o, -a, -l, -p"
我不明白为什么这已经停止工作。为了排除故障,我添加了2个输入命令,但代码从未到达
input(“B”)
有人能告诉我发生这种情况的可能原因吗。python的版本是3.4.1,从上次运行此代码到现在还没有更新

非常感谢

因为在所有调用
add_argument
的过程中都出现了,所以我的结论是

  • 其他人更改了您的程序,或者
  • 这是您第一次尝试在不提供这些参数的情况下运行它
但是,我确实觉得奇怪的是,使用
--help
选项运行程序时会产生以下输出:

usage: so16.py [-h] -o OUTPUTFILE -a APPOSITIONS [APPOSITIONS ...] -l
               TOTALTRACKLENGTH -p ATTENUATORADDR [ATTENUATORADDR ...]

RF Profile Generator

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUTFILE         Output filename (default: None)
  -a APPOSITIONS [APPOSITIONS ...]
                        Trackside AP position(s) (default: None)
  -l TOTALTRACKLENGTH   Length of the track (m) (default: None)
  -p ATTENUATORADDR [ATTENUATORADDR ...]
                        Programmable attenuator IP address(es) (default: None)

我不明白为什么这条消息暗示必需的参数是可选的。

很明显,有些东西已经改变了——除非你订阅了cargo cult信仰!它在Python 3.6上对我有效定义“工作”-参数规范清楚地表明参数是必需的。这在Python 3.4.2“工作”上对我很有效,正如中所述,我使用与上面给出的参数完全相同的参数运行这段代码,我没有遇到控制台抱怨没有提供所需参数的问题。谢谢@holdenweb的输入。首先,这是不可能的,因为此.py文件存储在我的电脑上,其他人无法访问。对于第二点,对该脚本的调用存储在.bat文件中,我只在需要时更改.bat文件上的输入参数。脚本保持不变。今天遇到问题后,我返回到一个pervious.bat文件(运行良好),它给了我相同的错误消息。为了澄清,调用程序时,我已提供了所有必需的参数:rf.py-o OutputFile-a 10 20 30 40-l 600-p 10.0.1.55如果这是Windows命令和.bat问题,请确保
%1%2
etc符号正确。在Windows上传递命令行参数总是比在Linux上更为脆弱。
usage: so16.py [-h] -o OUTPUTFILE -a APPOSITIONS [APPOSITIONS ...] -l
               TOTALTRACKLENGTH -p ATTENUATORADDR [ATTENUATORADDR ...]

RF Profile Generator

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUTFILE         Output filename (default: None)
  -a APPOSITIONS [APPOSITIONS ...]
                        Trackside AP position(s) (default: None)
  -l TOTALTRACKLENGTH   Length of the track (m) (default: None)
  -p ATTENUATORADDR [ATTENUATORADDR ...]
                        Programmable attenuator IP address(es) (default: None)