python - 使用 'argparse' 而不是 sys.argv

标签 python argparse argv

我的脚本当前使用 sys.argv 检查提供给程序的输入文件。

我正在尝试使用 argparse,但我似乎无法让它工作。我能够设置它并添加一个参数,但是当我解析一个参数并打印该解析的参数时,我得到了一个命名空间。我怎样才能得到一个字符串?基本上,我想将参数作为字符串,并打开一个具有该名称的文件。

目前,我的 sys.argv 是:

filename = sys.argv[1]
f = open(filename, 'r')

我的 argparse 打印出一个 Namespace 如下:

arg = parser.parse_args()
print arg

如何使用它打开文件?我想使用 argparse 因为参数的错误处理要容易得多。

最佳答案

认为使用 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()

指定那些关键字参数也有助于制作漂亮的 -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

关于python - 使用 'argparse' 而不是 sys.argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310631/

相关文章:

python - 减少 Arduino 和 Python 串行通信时的延迟

python - argparse - 组合父解析器、子解析器和默认值

python - 使我的 python 命令行程序与 argparse 交互

C 编程和 argv(指针算术)

python - 在基类和派生类中使用来自基类的装饰器

python - 读取输入后隐藏控制台窗口

python - 将python测试运行信息导入sonarqube

Python argparse 可选参数仅在输入正确位置时才有效

perl - 如何将 @ARGV 的元素分配给 $variable,然后打印它?

python - 如何检查 argv 是否引用 python2.7 中的现有文件?