我的文本文件
import sys
from itertools import islice
args = sys.argv
print (args)
#['file.py', 'datafile', '-N', '10']
if args[1] == '-h':
print ("-N for printing the number of lines: python file.py datafile -N 10")
if args[2] == '-N':
datafile = args[1]
number = int(args[3])
with open(datafile) as myfile:
head = list(islice(myfile, number))
head = [item.strip() for item in head]
print (head)
print ('\n'.join(head))
用户期望的输入: 1)生成的行数
2)输出到文件或控制台
3)当没有给程序参数时提供帮助。
4)确保该程序生成的行数是该程序的用户输入的行数。 (想想很多)
python3 test.py --help(应该显示帮助选项)
python3 test.py -N 20型控制台(它应该在控制台中打印日志)
python3 test.py -N 10 -type日志-name abc.log(应该将日志打印到文件中)
我的Psedo代码
argument passing
还有没有比$I->grabService('doctrine');
答案 0 :(得分:6)
如果未指定 output_file ,则该程序将默认在控制台中打印行。
def parsing_arguments():
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter,
description="""Write what your tool is doing here""")
parser.add_argument("-n",
"--number_of_lines",
type=int,
help="Number of line to be generated",
required=True)
parser.add_argument("-o",
"--output_file",
default=None,
help="output file used for saving logs")
args = parser.parse_args()
output_to_console = args.output_file is None
return {"number_of_lines": args.number_of_lines,
"output_file": args.output_file
"output_to_console":args.output_to_console}
def line_generator_function(number_of_lines,output_file,output_to_console):
lines = ... # custom logic here # assuming that lines is a list of strings
if output_to_console is True:
print(*lines, sep="\n")
else:
with open(output_file, "wt") as out:
print(*lines, sep="\n", file=out)
if __name__ == "__main__":
arguments = line_generator_function()
line_generator_function(**arguments)
argstrong会自动提供-帮助。它将打印主要描述和提供给参数描述的帮助。以及它被称为,不带任何参数。
如果您需要 dekstop GUI ,则可以检查此工具。 Gooey
答案 1 :(得分:4)
对于命令行参数,请使用Python标准库argparse
:
Ionic CLI : 5.4.5 (C:\Users\AMD\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : @ionic/angular 4.11.3
@angular-devkit/build-angular : 0.803.3
@angular-devkit/schematics : 8.1.2
@angular/cli : 8.3.3
@ionic/angular-toolkit : 2.0.0