Environnement d'exploitation
Xeon E5-2620 v4 (8 noyaux) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 et ses-devel
mpich.x86_64 3.1-5.el6 et ses-devel
gcc version 4.4.7 (Et gfortran)
NCAR Command Language Version 6.3.0
WRF v3.7.Utilisez 1.
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
Je souhaite spécifier un argument d'exécution dans le script Python en cours d'implémentation et l'exécuter.
Référence http://qiita.com/munkhbat1900/items/d7f9b11fb0965085964e Référence http://qiita.com/petitviolet/items/b8ed39dd6b0a0545dd36
v0.1 > AttributeError: 'Namespace' object has no attribute 't'
La mise en œuvre suivante a été faite en référence aux deux ci-dessus.
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'
Il n'y a pas d'attribut appelé 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)
résultat
$ python test_python_170323i.py -t 314
314
Lorsque --timeIndex
est spécifié, il semble que .timeIndex
soit utilisé à la place de .t
lors de la lecture.
https://docs.python.jp/3/library/argparse.html Cela semble être lié.
Il semble que vous puissiez spécifier le nom de l'attribut en spécifiant dest.
https://docs.python.jp/3/library/argparse.html 16.4.1.2. Ajouter un argument
L'attribut accumulate est spécifié à partir de la ligne de commande si --sum est spécifié
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 est accepté lorsque timeIndex est spécifié. La valeur est 24, ce qui est enveloppant, et le résultat est le même que lorsque 4 est spécifié. (Le timeIndex est en fait spécifié par [0..23]).
Recommended Posts