Problème: je veux écrire le chemin d'un répertoire comme entrée d'utilisateur dans un add.argument
De ArgumentParser()
.
Jusqu'à présent: j'ai écrit ceci
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('path', option = os.chdir(input("paste here path to biog.txt file:")), help= 'paste path to biog.txt file')
Des idées, quelle serait la solution idéale à ce problème?
On peut s'assurer que le chemin est un répertoire valide avec quelque chose comme:
import argparse, os
def dir_path(string):
if os.path.isdir(string):
return string
else:
raise NotADirectoryError(string)
parser = argparse.ArgumentParser()
parser.add_argument('--path', type=dir_path)
# ...
La vérification est possible pour les fichiers utilisant os.path.isfile()
à la place, ou l'un des deux en utilisant os.path.exists()
.
Argument Parser (argparse) Exemples: Différents types d'arguments avec des gestionnaires personnalisés ajoutés. Pour CHEMIN vous pouvez passer "- chemin" suivi de la valeur du chemin comme argument
import os
import argparse
from datetime import datetime
def parse_arguments():
parser = argparse.ArgumentParser(description='Process command line arguments.')
parser.add_argument('-path', type=dir_path)
parser.add_argument('-e', '--yearly', nargs = '*', help='yearly date', type=date_year)
parser.add_argument('-a', '--monthly', nargs = '*',help='monthly date', type=date_month)
return parser.parse_args()
def dir_path(path):
if os.path.isdir(path):
return path
else:
raise argparse.ArgumentTypeError(f"readable_dir:{path} is not a valid path")
def date_year(date):
if not date:
return
try:
return datetime.strptime(date, '%Y')
except ValueError:
raise argparse.ArgumentTypeError(f"Given Date({date}) not valid")
def date_month(date):
if not date:
return
try:
return datetime.strptime(date, '%Y/%m')
except ValueError:
raise argparse.ArgumentTypeError(f"Given Date({date}) not valid")
def main():
parsed_args = parse_arguments()
if __name__ == "__main__":
main()
Vous pouvez utiliser quelque chose comme:
import argparse, os
parser = argparse.ArgumentParser()
parser.add_argument('--path', help= 'paste path to biog.txt file')
args = parser.parse_args()
os.chdir(args.path) # to change directory to argument passed for '--path'
print os.getcwd()
Passez le chemin du répertoire comme argument à --path
lors de l'exécution de votre script. Vérifiez également le document officiel pour une utilisation correcte de argparse
: https://docs.python.org/2/howto/argparse.html