在 python 中调试 argparse

2024-01-11

我可以知道调试 argpars 函数的最佳实践是什么。

假设我有一个 py 文件 test_file.py ,其中包含以下几行

# Script start
import argparse
import os
parser = argparse.ArgumentParser()
parser.add_argument(“–output_dir”, type=str, default=”/data/xx”)
args = parser.parse_args()
os.makedirs(args.output_dir)
# Script stop

上述脚本可以通过以下方式从终端执行:

python test_file.py –output_dir data/xx

但是,对于调试过程,我想避免使用终端。因此解决方法是

# other line were commented for debugging process
# Thus, active line are
# Script start
import os
args = {“output_dir”:”data/xx”}
os.makedirs(args.output_dir)
#Script stop

但是,我无法执行修改后的脚本。我可以知道我错过了什么吗?


当用作脚本时,parse_args将产生一个Namespace对象,显示为:

argparse.Namespace(output_dir='data/xx')

then

args.output_dir

将是该属性的值

在测试中,您可以做以下几件事:

args = parser.parse_args([....])  # a 'fake' sys.argv[1:] list

args = argparse.Namespace(output_dir= 'mydata')

and use args像之前一样。或者直接致电

os.makedirs('data/xx')

我建议将脚本组织为:

# Script start
import argparse
import os
# this parser definition could be in a function
parser = argparse.ArgumentParser()
parser.add_argument(“–output_dir”, type=str, default=”/data/xx”)

def main(args):
    os.makedirs(args.output_dir)

if __name__=='__main__':
    args = parser.parse_args()
    main(args)

这样一来parse_args导入文件时不运行该步骤。无论你通过args Namespace to main或传递值,例如args.output_dir,或者一本字典等等都是你的选择。

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

在 python 中调试 argparse 的相关文章

随机推荐

  • Telerik 和 jquery

    我正在开发一个从客户那里收到的应用程序 他们使用了一些 Telerik Web 控件 Telerik 显然包含它自己的 jquery 1 3 2 版本 而我使用的是 1 4 1 我遇到了一些奇怪的 javascript 问题 我想排除旧的
  • 具有默认参数值的 C# 方法不会生成无参数重载?

    最近 我想向扩展方法添加一个可选参数 原来的方法是这样的 public static class Extensions public static bool Foo this IFoo target target DoIt true 这显然
  • QString::split() 和“\r”、“\n”和“\r\n”约定

    我明白那个QString split应该用来获得QStringList从多行QString 但是如果我有一个文件并且我不知道它是来自 Mac Windows 还是 Unix 我不确定是否QString split n 在所有情况下都会很好地
  • 基类的类型不完整

    我有一个基类Point我从中继承Point3D 然而 由于某种原因 班级Point必须始终返回Point3D为操作add 所以我将其包含在我的包含中 这是我的班级Point ifndef POINT H define POINT H inc
  • CodeIgniter 罐身份验证

    我正在利用这个名为坦克验证 http www konyukhov com soft tank auth 希望这个问题不会太小众 因为它特定于这个库 我正在尝试如何在用户注册后立即登录 看来这个库不提供这个功能 我不想开始搞乱这个库 但也许有
  • 从 Django 视图启动 Scrapy

    我使用Scrapy的经验有限 每次使用它总是通过终端的命令 如何从 django 模板获取表单数据 要抓取的 url 以与 scrapy 通信以开始抓取 到目前为止 我只想到从django的视图中获取表单返回的数据 然后尝试进入scrapy
  • require.js +backbone.js:如何构建具有初始化功能的模块?

    我有一个包含三个页面的应用程序 它们是单页界面 这些页面具有相似但不相同的功能 所以我想要有提供通用功能的 javascript 模块 然后每个页面可以定制 覆盖部分通用功能 我使用的是backbone js 所以我要做的是 加载包含常见模
  • 使用Python登录Google帐户进入网站[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在制作一个网站 该网站制作分组中人数的图表 来自 www codecamy com 为了实现这一目标 我制定了一个计划 我将有一个服务
  • HTTP 状态代码 200,但页面未加载 Node.js Socket.io -- Node.js Socket.io 教程、Daniel Nill、fs.readFile()、socket.html

    了解 node js 和 socket io 并进行操作Daniel Nill 的本教程 http www danielnill com blog nodejs tutorial with socketio 服务器启动没有问题 但是 当我导
  • 如何从codeigniter中的视图调用控制器函数?

    使用 codeigniter 我有一个控制器 如下所示
  • Android AccessibilityNodeInfo刷新()和回收()

    我已经阅读了 android 文档https developer android com reference android view accessibility AccessibilityNodeInfo html https devel
  • 当我在 OnChange 事件中调用 Delete 时,为什么会出现 RichEdit 行插入错误?

    我已经用谷歌搜索并检查了很多地方来寻找解决方案 但我发现的所有情况都不同或涉及比简单地添加或删除行更高级的东西 基本上 我想进行一种滚动丰富的编辑 替代方法是将插入符号移动到底部 我已经找到了解决方案 我正在向其中添加行并检查Lines C
  • 如何将变量/参数写入标准输出?

    我正在尝试调试我的第一个Bicep https learn microsoft com en us azure azure resource manager bicep overview模板 如何将变量或参数值写入标准输出 就像是 var
  • Spark 将每个操作执行两次

    我创建了一个简单的 Java 应用程序 它使用 Apache Spark 从 Cassandra 检索数据 对其进行一些转换并将其保存在另一个 Cassandra 表中 我正在使用 Apache Spark 1 4 1 它配置为独立集群模式
  • 将 ATL 项目从 vs2010 升级到 vs2013 时出现编译错误 [重复]

    这个问题在这里已经有答案了 当在 Visual Studio 2013 构建中包含来自 Microsoft ATL 库的 atlwin h 时 可能会导致出现大量有关未定义元素的编译器错误 HMONITOR is not defined 使
  • Xcode Instruments 在设备上运行时无法拍摄泄漏快照

    最近 在设备上运行应用程序时 我无法使用 Instruments 测试泄漏 仪器将尝试拍摄快照 但状态将冻结在 正在分析过程 起初我以为只是需要时间 但我等了20多分钟却没有运气 但它在模拟器上仍然运行良好 到目前为止我已经尝试过 使用具有
  • 收到构建或发布失败的通知

    我已经将 Azure 管道与团队松弛通道集成在一起 这很好 它告诉我们构建何时完成并发布部署 但真正糟糕的是 它不会报告构建或发布失败的时间 这可以说是更重要的信息 我进入设置尝试查看是否有任何事件 但似乎答案是否定的 我还想看看是否可以用
  • cygwin下使用GCC生成的可执行文件

    我正在使用 Cygwin 并已将 GCC 版本 4 3 4 20090804 release 1 安装为 Cygwin 软件包 当我在 Cygwin shell 下使用 GCC 构建 C 代码时 生成的可执行输出文件是类型为可执行文件 PE
  • 在运行时更改 spring-cloud-stream 实例索引/计数

    在 spring cloud stream 中 有没有一种方法可以在不重新启动应用程序的情况下更改应用程序的实例计数和实例索引 另外 是否有任何推荐的方法来自动填充这些值 在微服务世界中 这似乎非常困难 因为服务一直在启动和停止 在 spr
  • 在 python 中调试 argparse

    我可以知道调试 argpars 函数的最佳实践是什么 假设我有一个 py 文件 test file py 其中包含以下几行 Script start import argparse import os parser argparse Arg