Студент-новичок Python здесь (работает 2,7) пытается выяснить мое понимание функций и argparse ... иногда вместе.Как вернуть значение main из функции, вызванной функцией argparse
У меня есть основная функция, которая вызывает функцию argparse, которая имеет аргумент командной строки argparse (-i/- input), который вызывает функцию path_check, которая проверяет путь, переданный во входном аргументе. Теперь я не могу возвратить проверенный путь ввода к моей основной функции, так как функция path_check не вызывается в основном. Также интересно, есть ли лучший способ структурировать это (не уверен, что класс здесь подходит).
#!/bin/user/python
import os,sys
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input",help="source directory",
required=True,type=path_check)
args = parser.parse_args()
def path_check(arg):
if not os.path.exists(arg):
print("Directory does not exist. Please provide a valid path")
else:
return arg
def main():
'''
This main script analyzes the source folder and redirects
files to the appropriate parsing module
'''
parse_args()
source = path_check() # This is the problem area
if __name__ == "__main__": main()
получил Ошибка
TypeError: path_check() takes exactly 1 argument (0 given)
EDIT: Вот исправленный код, если это полезно для всех. Мне нужно было добавить описание аргумента argparse, чтобы у меня было средство вызвать значение аргумента, которое я мог бы вернуть.
#!/bin/user/python
import os,sys
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input",help="source directory",
dest="input",required=True,type=path_check)
args = parser.parse_args()
return args.input
def path_check(arg):
if not os.path.exists(arg):
print("Directory does not exist. Please provide a valid path")
else:
return arg
def main():
'''
This main script analyzes the source folder and redirects
files to the appropriate parsing module
'''
source = parse_args()
if __name__ == "__main__": main()
И что вы не понимаете? Вы определили его, чтобы принять аргумент, но не передавайте его, когда вы его вызываете. – jonrsharpe