Python> Exécuter avec des arguments d'exécution> Utiliser import argparse

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.

v0.2> Succès

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é.

v0.3> Spécifier le nom de l'attribut

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)

Remarques

$ 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

Python> Exécuter avec des arguments d'exécution> Utiliser import argparse
Exécutez Python avec VBA
[Python] Utiliser JSON avec Python
Exécutez prepDE.py avec python3
Utiliser mecab avec Python 3
Utiliser DynamoDB avec Python
Exécutez Blender avec python
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Importer tsv avec Python
Exécutez iperf avec python
Exécuter un fichier Python avec une importation relative dans PyCharm
Utiliser l'API Trello avec python
Exécutez python avec PyCharm (Windows)
Exécutez Python avec CloudFlash (arm926ej-s)
Importer vtk avec brew python
Utiliser l'API Twitter avec Python
Utiliser TUN / TAP avec Python
Comment utiliser Python Argparse
Exécuter Label avec tkinter [Python]
Utiliser l'API subsonique avec python3
[Python] Je souhaite utiliser l'option -h avec argparse
Utiliser la caméra Point Grey avec Python (PyCapture2)
Utilisez vl53l0x avec RaspberryPi (python)
Travailler avec LibreOffice en Python: import
Exécutez Rotrics DexArm avec l'API Python
Exécutez mruby avec Python ou Blender
Utilisez NAIF SPICE TOOL KIT avec Python
(Note) Soyez prudent avec python argparse
Exécutez XGBoost avec Cloud Dataflow (Python)
Utiliser rospy avec virtualenv dans Python3
Exécutez Aprili depuis Python sur Orange
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Utiliser Python mis en pyenv avec NeoVim
Utiliser la synthèse vocale Windows 10 avec Python
Utiliser OpenCV avec Python 3 dans Window
Jusqu'à ce que Python fonctionne sur Apache
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
Exécutez le servo avec Python sur ESP32 (Windows)
Utilisez smbus avec python3 sous environnement pyenv
Utiliser DeepL avec python (pour la traduction d'articles)
Utiliser Tabpy avec Cloud Run (sur GKE)
Utiliser Amazon Simple Notification Service avec Python
[Introduction à Python] Utilisons foreach avec Python
Utilisez PIL ou Pillow avec Cygwin Python
[Python] Comment utiliser import sys sys.argv
[Python] Afficher les éléments de la liste en utilisant des arguments de longueur variable
Utiliser le chiffrement de la bibliothèque de chiffrement avec l'image Python de Docker
Utiliser Application Insights avec Python 3 (y compris les bouteilles)
Exécutez une application Web Python avec Docker
Utilisation des fonctions C ++ de python avec pybind11
Python> datetime> arguments d'exécution> démarrer le traitement immédiatement
Utilisez le pilote Web phantomjs de sélénium avec unittest de python
Jusqu'à ce que vous puissiez utiliser opencv avec python
Utiliser Python et MeCab avec Azure Functions
Enregistrer automatiquement les arguments de fonction dans argparse en Python