我的脚本目前使用sys.argv
来检查提供给程序的输入文件。
我正在尝试使用argparse
,但似乎无法让它发挥作用。我能够设置它并添加一个参数,但是当我解析一个参数并打印出解析的参数时,我得到了一个命名空间。我怎么能得到一个字符串?基本上,我想将参数作为字符串,并打开一个具有该名称的文件。
目前,我的sys.argv
是:
filename = sys.argv[1]
f = open(filename, 'r')
我的argparse
打印出Namespace
,如下所示:
arg = parser.parse_args()
print arg
如何使用它来打开文件?我想使用argparse
,因为参数的错误handlign更容易。
答案 0 :(得分:4)
认为最好(或者其他什么!)使用with
语句来打开这样的文件:
# printfile.py
import argparse
parser = argparse.ArgumentParser(description="Opens a file and does cool stuff ^^")
parser.add_argument('filename', type=str, help="Path to file to open")
args = parser.parse_args()
with open(args.filename) as f:
print ' my uber cool file:'
print f.readlines()
指定那些关键字args也有助于制作漂亮的-h帮助文本选项(整齐整洁)
[dlam@dlam-63221:~] $ python printfile.py -h
usage: printfile.py [-h] filename
Opens a file and does cool stuff ^^
positional arguments:
filename Path to file to open
答案 1 :(得分:2)
打印arg
后跟一个点,后跟您在argparse
设置中为参数指定的任何名称。
示例:
parser = argparse.ArgumentParser(description = 'Title you want')
parser.add_argument('-f', action = "store", dest = "fflag", type = str, help = "Filename to be used, stdin is default")
在这种情况下,文件名将在命令行上以-f
开头,parser.fflag
类型str
可以访问