Python 3.x 使用argparse运行python3脚本
我在python3中创建了一个函数,它获取一些txt文件的路径,并返回一个包含所有txt文件名称的列表。 以下是函数:Python 3.x 使用argparse运行python3脚本,python-3.x,command-line,argparse,Python 3.x,Command Line,Argparse,我在python3中创建了一个函数,它获取一些txt文件的路径,并返回一个包含所有txt文件名称的列表。 以下是函数: import os def files(path): folder = os.fsencode(path) filenames = [] for file in os.listdir(folder): filename = os.fsdecode(file) if filename.endswith( ('.txt') )
import os
def files(path):
folder = os.fsencode(path)
filenames = []
for file in os.listdir(folder):
filename = os.fsdecode(file)
if filename.endswith( ('.txt') ):
filenames.append(filename)
filenames.sort()
return filenames
要运行此功能,我可以执行以下操作,这些操作非常有效:
if __name__ == "__main__":
path = '/home/final_test'
file_list = files(path)
print(file_list)
但是问题出在这部分。我正在尝试使用argparse
创建一个脚本,以便在命令行中运行它。为此,我在脚本末尾添加了以下代码,但它不返回任何内容。你知道怎么修吗
def main():
ap = argparse.ArgumentParser(description="")
ap.add_argument('-P', '--path', required=True)
ap.add_argument('-o', '--outlist', required=True)
args = ap.parse_args()
file_list = files(path)
return file_list
if __name__ == "__main__":
from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE, SIG_DFL)
try:
main()
except IOError as e:
if e.errno != 32:
raise
except KeyboardInterrupt as e:
pass
您的main()
函数返回None
(由于return
语句为空)。假设您的files
函数正常工作,并且文件列表得到一些值,则该行之后不再使用。您可能希望在主函数文件\u列表中打印,或将其返回以便在主函数外部访问(将其分配给其他变量)
也就是说,我不明白你为什么需要信号行。你应该打印结果(?)
或
试试这个:
def main():
ap = argparse.ArgumentParser(description="")
ap.add_argument('-P', '--path', required=True)
#ap.add_argument('-o', '--outlist', required=True)
args = ap.parse_args()
print(args)
file_list = files(args.path)
return file_list
if __name__ == "__main__":
filelist = main()
print(filelist)
我纠正了if\u name
缩进;我从main
打印返回值;我正确地设置了路径。出于调试的目的,我
print(args)`。我编辑了这个问题。但是当我在命令行中这样运行它时,仍然没有得到任何结果:python3 QC.py'/home/final/QC/final_test'大纲您需要执行print(main())
或result=main()
然后打印result
。顺便说一下-我不知道--outlist
选项的目的是什么。。。
print(main())
def main():
ap = argparse.ArgumentParser(description="")
ap.add_argument('-P', '--path', required=True)
#ap.add_argument('-o', '--outlist', required=True)
args = ap.parse_args()
print(args)
file_list = files(args.path)
return file_list
if __name__ == "__main__":
filelist = main()
print(filelist)