Betriebsumgebung
Xeon E5-2620 v4 (8 Kerne) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 und seine-devel
mpich.x86_64 3.1-5.el6 und seine-devel
gcc version 4.4.7 (Und Gfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.Verwende 1.
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
Ich möchte ein Laufzeitargument in dem zu implementierenden Python-Skript angeben und ausführen.
Referenz http://qiita.com/munkhbat1900/items/d7f9b11fb0965085964e Referenz http://qiita.com/petitviolet/items/b8ed39dd6b0a0545dd36
v0.1 > AttributeError: 'Namespace' object has no attribute 't'
Die folgende Implementierung wurde unter Bezugnahme auf die obigen zwei vorgenommen.
test_python_170323i.py
import argparse
parser = argparse.ArgumentParser(description = "do something")
parser.add_argument(
'-t',
'--timeIndex',
type = int,
help = 'time index for netCDF file',
required = True)
cmd_args = parser.parse_args()
print(cmd_args.t)
$ python test_python_170323i.py -t 314
Traceback (most recent call last):
File "test_python_170323i.py", line 14, in <module>
print(cmd_args.t)
AttributeError: 'Namespace' object has no attribute 't'
Es gibt kein Attribut namens t.
test_python_170323i.py
import argparse
parser = argparse.ArgumentParser(description = "do something")
parser.add_argument(
'-t',
'--timeIndex',
type = int,
help = 'time index for netCDF file',
required = True)
cmd_args = parser.parse_args()
print(cmd_args.timeIndex)
Ergebnis
$ python test_python_170323i.py -t 314
314
Wenn "--timeIndex" angegeben wird, wird beim Lesen anscheinend ".timeIndex" anstelle von ".t" verwendet.
https://docs.python.jp/3/library/argparse.html Es scheint verwandt zu sein.
Es scheint, dass Sie den Attributnamen durch Angabe von dest angeben können.
https://docs.python.jp/3/library/argparse.html 16.4.1.2. Fügen Sie ein Argument hinzu
Das Attribut accumulate wird in der Befehlszeile angegeben, wenn --sum angegeben wird
import argparse
parser = argparse.ArgumentParser(description = "do something")
parser.add_argument(
'-t',
'--timeIndex',
dest='time_index',
type=int,
help='time index for netCDF file',
required=True)
cmd_args = parser.parse_args()
print(cmd_args.time_index)
$ python calc_latlon_avg_std_170323.py --timeIndex -20
total: 3477.89
avg_lat: 40.480
avg_lon: 116.246
std_lat: 0.137
std_lon: 0.103
$ python calc_latlon_avg_std_170323.py --timeIndex 4
total: 3477.89
avg_lat: 40.480
avg_lon: 116.246
std_lat: 0.137
std_lon: 0.103
-20 wird akzeptiert, wenn timeIndex angegeben ist. Der Wert wird bei 24 umgangen, was dem Ergebnis von 4 entspricht. (Der timeIndex wird tatsächlich durch [0..23] angegeben.)
Recommended Posts