使用“argparse”而不是 sys.argv

2023-12-25

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

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

目前,我的sys.argv is:

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

My 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“argparse”而不是 sys.argv 的相关文章

随机推荐

  • JAXB 解组返回 Null

    我正在制作这个示例 GUI 它只是将计算机部件从一侧移动到另一侧 并且能够将列表 以 xml 格式 加载和保存到桌面 除了重新加载已保存的 xml 文件之外 一切正常 我认为这与Save java中的注释有关 话虽如此 我不确定需要什么或者
  • pywinauto:访问 chrome gui

    我正在尝试使用 pywinauto 选择打印机并在 chrome 浏览器上进行打印 但我无法访问 gui 组件 我可以在 UIAutomation 模式下看到 Microsoft Inspect exe 中的组件 参见屏幕截图 我已经开始使
  • 将 Curl 命令转换为在 Zapier Webhook 中运行

    我正在尝试找到一种方法来运行它curlZapier 上的 Webhook Zap 中的命令 但我似乎无法弄清楚 我如何将其输入到 Webhook 中 将其作为一个运行会更好吗 Code Zap curl X POST https api z
  • 如何在 RealityKit 中显示图库中的图像?

    我想显示图库中的图像 我正在使用 imagePicker 加载图像 func imagePickerController picker UIImagePickerController didFinishPickingMediaWithInf
  • io.open 与 python 中 open 的区别

    过去 有codecs被替换为io 虽然看起来更建议使用io open 大多数Python入门课程仍然在教授open 有一个问题是Python 中 open 和 codecs open 的区别 https stackoverflow com
  • Spring Boot 中的 @InitBinder 无法与 @RequestBody 一起使用

    如果我使用 InitBinder而不限制它 它可以与 RequestBody一起正常工作来验证我的对象 InitBinder private void initBinder WebDataBinder binder binder setVa
  • YouTube 自动播放无法正常工作

    我正在使用 youtube embed 来显示视频 我需要在网站打开时自动播放 我在这段代码工作正常之前就使用了它 但在过去的几天里 自
  • 如何使用 iText7 和 C# 将文本添加到现有 pdf 而不覆盖内容?

    我有这段代码 应该在 pdf 中的图像后面插入文本 Read the data from input file string reader C InesProjetos PrintTextWithImage PrintTextWithIma
  • 如何获取另一个字符串中字符串的所有 IndexOf 实例 C# [重复]

    这个问题在这里已经有答案了 我有一个巨大的字符串 内容页 我想获取子字符串实例的所有索引 示例 怎么样you以及在哪里you 我如何获得所有的索引you在上面的句子中 请帮忙 您可以使用以下扩展名 它用IndexOf http msdn m
  • ExecJS 咖啡脚本不显示编译错误的行号(Rails 资产管道)

    在我的 Rails 应用程序之一中 ExecJS 没有显示咖啡脚本编译错误的行号 我的编译错误消息将如下所示 ExecJS RuntimeError in Referrals new Showing MyApp app views layo
  • App Engine - 难以访问 Twitter 数据 - Flask

    我在使用 Google App Engine 从 Twitter 搜索 API 获取数据时遇到问题 在个人开发环境中工作我没有任何问题 我能够得到我想要的 JSON 但是 一旦代码部署到 App Engine 我就会遇到 HTTP 500
  • TypeError:创建对象时 object() 不带任何参数 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 首先 我知道这里已经有很多与这个问题相关的答案 但我找不到适合我的问题的答案 当尝试创建一个对象时 我基本上只是收到此错误 如果有答案 谢谢
  • CoreData、NSManagedObject 获取或创建(如果不存在)

    我正在尝试解析大量文本文件并将其内容组织为托管对象 文本文件中有很多重复项 因此 附带 任务之一就是删除它们 在这方面我想做的是检查具有给定内容的实体是否存在 如果不存在 我将创建一个 但是 我有不同的实体 具有不同的属性和关系 我想要的是
  • 如何禁用 jQuery.jplayer 自动播放?

    当我像这样初始化播放器时 jquery jplayer jPlayer ready function this element jPlayer setFile previews cancion mp3 previews horse ogg
  • ASP.NET MVC 定位从 cshtml 生成的 cs 文件?

    所以我最近开始使用 ASP NET MVC 4 我使用的是 razor 引擎 我的问题是关于视图文件 后缀为 cshtml 在我看来 这些都是由 razor 预编译成 cs 文件 然后再编译成 MSIL 这是我作为 JSP 开发人员时所熟悉
  • 另一个 IE“预期对象”错误,没有任何信息

    嘿 我一直因为这个错误而烦恼不已这个网站 http flowdev co uk 我遇到了可怕的事情Object expected仅在 IE6 和 IE7 中第 1 行第 21 字符出现错误 我只是想知道是否有人知道这可能与什么有关 我知道整
  • 如何在闪亮的应用程序中嵌入 Twitter 时间线?

    难以将 Twitter 时间线嵌入到闪亮的应用程序中 尝试遵循此代码 library shiny runApp list ui fluidPage tags head tags script function d s id var js f
  • 检查后表情发生了变化。以前的值:'ng-valid:true'。当前值:'ng-valid: false'

    我在父组件中有角反应形式 在子组件中有部分 在子组件内部 我有一个复选框 当选中时 将打开更多字段 我希望它们全部都是必需的 我正在使用 setValidators 但出现错误 ParentFormComponent html 3 错误 错
  • Java 中的字符串分词器

    我有一个文本文件 其中包含用 分隔的数据 我需要获取每个字段 用 分隔 并处理它 文本文件如下所示 ABC DEF FGHT 我正在使用字符串标记生成器 JDK 1 4 来获取每个字段值 现在的问题是 我应该在 DEF 之后得到一个空字符串
  • 使用“argparse”而不是 sys.argv

    我的脚本当前使用sys argv检查提供给程序的输入文件 我正在尝试利用argparse相反 但我似乎无法让它发挥作用 我能够设置它并添加一个参数 但是当我解析一个参数并打印该解析的参数时 我得到一个名称空间 我怎样才能得到一个字符串 基本