我正在尝试读取在命令行上传递的多个文件作为参数,但也检查是否正在传递位置参数以在设置位置参数时执行不同的操作。例如,如果运行python3 myprogram.py file1.txt file2.txt
,程序只将文件存储到变量中并加载另一个函数,但如果我们运行python3 myprogram.py -n file1.txt file2.txt
,程序会执行其他操作。我使用sys和argparse作为两个库来解决这个问题。
这就是我处理传递参数的方式..
def manin():
parser = ArgumentParser()
parser.add_argument("-d", "--default", dest="myFile", help="Open specified file")
args = parser.parse_args()
myFile = args.myFile
if myFile:
text = open(myFile)
counter = 0 # set a counter to 0
for line in text: #for each line in text if the " 200 " is found add 1 to the counter and repeat until done.
if re.findall(r"\s\b200\b\s", line):
counter += 1
print("\nTotal of (Status Code) 200 request:", counter, "\n")
else:
menu()
这就是我将传递给程序的所有文件参数加载到变量
中的方法allFileContents = ""
for arg in sys.argv[1:]:
try:
print("Loading Files ...." , sys.argv[1:])
myfile = open(arg, "r")
filecontents = myfile.readlines()
myfile.close()
allFileContents = allFilesContents + filecontents
return allFileContents
except OSError:
print("File could not be opened" + arg + ".")
我无法理解如何将两者结合在一起,以便它可以执行这两个功能。将文件加载到变量中,并检查位置参数。任何提示或建议将受到高度赞赏,有人告诉我使用* args和** kwargs会更容易但我没有找到任何在线处理带有* args和** kwargs的文件。感谢