我如何从 argparse 函数调用的函数 return 到 main 的值
How do I return a value to main from a function called by an argparse function
新手 Python 学生在这里 (运行 2.7) 试图表达我对函数和 argparse 的理解......有时在一起。
我有一个调用 argparse 函数的主函数,它有一个调用 path_check 函数的 argparse 命令行参数 (-i/--input),它验证输入参数中传递的路径.现在我不知道如何将经过验证的输入路径 return 返回到我的 main 函数,因为 path_check 函数没有在 main 中调用。还想知道是否有更好的方法来构建它(不确定 class 在这里是否合适)。
#!/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)
编辑:
如果对任何人有帮助,这是更正后的代码。我需要向 argparse 参数添加描述,这样我就有了调用参数值的方法,然后我可以 return.
#!/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()
为了澄清上述评论,您需要在此处包含论点
source = path_check(argument)
在main中调用函数时,如果要传递一些变量,需要将它们插入括号中。
function(Variable1, Variable2,)
并且不要忘记将它们放在函数本身上以接受变量。要将 return 变量添加到您的 main 函数,只需在函数末尾执行 return VariableName 并将其添加到 main 中的调用前面,然后是 = 符号。
示例:
main()
x = 1
ReturnVariable = function1(x)
function1(x)
ReturnVariable = x * 2
return ReturnVariable
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input",help="source directory",
required=True,type=path_check)
args = parser.parse_args()
return args # <====
def main():
'''
This main script analyzes the source folder and redirects
files to the appropriate parsing module
'''
args = parse_args() # <===
source = path_check(args.input) # <===
parse_args
函数必须return将args
变量main
。然后 main
必须将其 input
属性传递给 path_check
.
args.input
将是您在命令行中提供的字符串。
args
是一个简单的 argparse.Namespace
对象,其属性对应于您在 parser
中定义的每个参数。其中一些属性的值可能为 None
,具体取决于默认值的处理方式。
在调试过程中,最好包含一个
print(args)
语句,这样您就可以看到从解析器返回的内容。
新手 Python 学生在这里 (运行 2.7) 试图表达我对函数和 argparse 的理解......有时在一起。
我有一个调用 argparse 函数的主函数,它有一个调用 path_check 函数的 argparse 命令行参数 (-i/--input),它验证输入参数中传递的路径.现在我不知道如何将经过验证的输入路径 return 返回到我的 main 函数,因为 path_check 函数没有在 main 中调用。还想知道是否有更好的方法来构建它(不确定 class 在这里是否合适)。
#!/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)
编辑: 如果对任何人有帮助,这是更正后的代码。我需要向 argparse 参数添加描述,这样我就有了调用参数值的方法,然后我可以 return.
#!/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()
为了澄清上述评论,您需要在此处包含论点
source = path_check(argument)
在main中调用函数时,如果要传递一些变量,需要将它们插入括号中。
function(Variable1, Variable2,)
并且不要忘记将它们放在函数本身上以接受变量。要将 return 变量添加到您的 main 函数,只需在函数末尾执行 return VariableName 并将其添加到 main 中的调用前面,然后是 = 符号。
示例:
main()
x = 1
ReturnVariable = function1(x)
function1(x)
ReturnVariable = x * 2
return ReturnVariable
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input",help="source directory",
required=True,type=path_check)
args = parser.parse_args()
return args # <====
def main():
'''
This main script analyzes the source folder and redirects
files to the appropriate parsing module
'''
args = parse_args() # <===
source = path_check(args.input) # <===
parse_args
函数必须return将args
变量main
。然后 main
必须将其 input
属性传递给 path_check
.
args.input
将是您在命令行中提供的字符串。
args
是一个简单的 argparse.Namespace
对象,其属性对应于您在 parser
中定义的每个参数。其中一些属性的值可能为 None
,具体取决于默认值的处理方式。
在调试过程中,最好包含一个
print(args)
语句,这样您就可以看到从解析器返回的内容。