如何将字典作为命令行参数传递给Python脚本?

2023-12-02

如何将字典作为命令行参数传递给Python脚本? 我需要获取字典,其中键是字符串,值是某些元素的列表 – 例如看起来像:

command_line_arguments = {"names" : ["J.J.", "April"], "years" : [25, 29]}

我试过像

if __name__ == '__main__':
    args = dict([arg.split('=') for arg in sys.argv[2:]]) # also tried with 1 but doesn't work
    main(args)

我正在调用脚本

$ python saver.py names=["J.J.", "April"] years=[25, 29]

但它不起作用,字典的长度为 0,需要 2。任何人都可以帮助我在 main.c 中传递和创建字典。


这里需要注意的重要一点是,在命令行中您不能传入 python 对象作为参数。您当前使用的 shell 将解析参数并根据其自己的参数解析规则将它们传入。

话虽这么说,你不能传入 python 字典。然而,像 JSON 这样的东西可以让你非常接近。

JSON - 或 JavaScript 对象表示是一种获取 Python 对象并将其转换为类似字符串的表示形式的方法,适合传递到多种语言。话虽如此,您可以传入这样的字符串:

python saver.py '{"names": ["J.J.", "April"], "years": [25, 29]}'

在您的 python 脚本中,执行以下操作:

import json
data=json.loads(argv[1])

这将为您返回一个代表您想要传入的数据的字典。

同样,您可以获取 python 字典并将其转换为字符串:

import json
data={'names': ["J.J.", "April"], 'years': [25,29]}
data_str=json.dumps(data)

尽管 JSON 相当通用,但还有其他方法可以实现此目的。需要注意的关键是,无论你如何做 - 你都不会将字典传递到 Python 中, - 你将传递一组参数(全部都是字符串),你需要以某种方式传递这些参数转换成你需要的python类型。

@EvanZamir - 请注意,(通常)在 shell 中,如果引号出现在带引号的字符串中,则需要对其进行转义。在我的示例中,我用单引号引用 JSON 数据,而 json 字符串本身使用双引号,从而不需要引号。

如果混合引号(使用双引号来引用参数,并在内部使用双引号),那么 shell 将要求对其进行转义,否则它遇到的第一个双引号将被视为参数的“结束引号”。请注意,在示例中,我使用单引号括起 JSON 字符串,并且双引号字符串内。如果我在字符串中使用单引号,我需要使用反斜杠对其进行转义,即:

python saver.py '{"names": ["J.J.", "April\'s"], "years": [25, 29]}'

or

python saver.py "{\"names\": [\"J.J.\", \"April's\"], \"years\": [25, 29]}"

请注意,引用内容是 shell 的一个功能,因此 YMMV 可能会有所不同(例如,如果您使用某些 exec 方法来调用脚本,则可能不需要转义,因为可能不会调用 bash shell。)

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

如何将字典作为命令行参数传递给Python脚本? 的相关文章

随机推荐

  • C++-单例类

    单例类可以被继承吗 如果是 那我们该怎么办呢 编辑 我的意思是说 如果我们有一个使用单例设计模式的类 那么它可以被继承吗 单例有私有构造函数 因此继承是不可能的 除此之外 单例具有实例化私有实例成员的静态方法 并且由于您无法覆盖静态方法 因
  • Python 中带有键的 sort_values()

    我有一个数据框 其中列名称是时间 0 00 0 10 0 20 23 50 现在 它们按字符串顺序排序 因此 0 00 是第一个 9 50 是最后一个 但我想在时间之后对它们进行排序 所以 0 00 是第一个 23 50 是最后一个 If
  • 正则表达式捕获组 swift

    我在字符串中有一个正则表达式搜索方法 extension String func searchRegex regex String gt Array
  • 旋转后恢复倒计时

    我有一个从 60 秒开始倒计时的倒计时器 这个倒计时器通过将文本视图设置为剩余毫秒来工作 但是每当我旋转设备时 倒计时器就会重置 我知道发生这种情况是因为活动会轮流重新启动 因此 我尝试将剩余的时间保存在捆绑包中 然后在活动重新启动后恢复它
  • 使用 SQL 查询查找订购 > x 种产品的客户的详细信息

    请注意 我见过类似的查询here 但认为我的查询足够不同 值得提出一个单独的问题 假设有一个包含以下表的数据库 customer table 包含 customer ID 关键字段 customer name 包含 order ID 关键字
  • 无法使用 Google Calendar Api v3 获取访问令牌

    我正在尝试将日历事件放入日历中 而无需身份验证提示 我读到 使用 OAuth 服务帐户可以让您执行此操作 我已经在我的 Google 开发者控制台中设置了服务帐户 但对此没有任何运气 我们有一个 Google 企业帐户 我将我的委托用户设置
  • 使用 PHP 解析 JSON

    我从服务源中提取了以下 JSON 内容 global event ending at 2011 11 07T02 00 00Z short url http bit ly reAhRw created at 2011 10 04T14 25
  • Android 无法识别 Firebase“createCustomToken”

    我正在实施 使用自定义令牌登录 我在以下位置找到了这段代码Firebase 文档 firebaseAuth createCustomToken uid addOnSuccessListener new OnSuccessListener
  • Jsoup从css获取背景图像路径

    我正在寻找给定网站上的所有图像 为此 我需要找到 css 中的内容 例如 gk crop background image url images style1 g rss 2 png 现在我的问题是如何使用 JSoup 获取所有这些 url
  • 无法使用“(T,来自:数据)”类型的参数列表调用“解码”

    我正在尝试创建一个函数 该函数根据传递给它的自定义 JSON 模型接受 Codable 类型的参数 错误 Cannot invoke decode with an argument list of type T from Data 发生在解
  • 如何知道 ListView 中的哪个 LinkBut​​ton 被单击

    我目前在 ListView 的 ItemTemplate 中有一个 LinkBut ton ListView 中的每个按钮都应调用相同的单击事件处理程序 但是 在处理程序中我需要知道单击了哪个按钮 这可能吗
  • 如何通过mssql存储过程读取远程(网络)机器中xml文件的内容

    我尝试使用批量插入读取本地计算机中单个 xml 文件的内容 SELECT FROM OPENROWSET BULK FILENAME SINGLE CLOB AS xmlData 它正在工作 但我正在尝试从远程机器读取数据 它给出以下错误
  • 在 Service Worker 更新时重新加载 Create-react-app

    我要修改create react app服务人员file并实现弹出消息 如果新的 Service Worker 已准备好激活 该消息将要求用户更新应用程序 我几乎完成了解决方案 但有一个陷阱 我想在用户确认服务工作人员更新弹出窗口时重新加载
  • 重新索引并填充 PySpark 中缺失的日期

    有没有办法填充 PySpark 中缺少的列日期和行值 目前 我将数据帧转换为 Pandas 并在那里重新索引 sdf show id 2018 01 01 2018 01 03 2018 01 05 1 0 0 1 0 0 0 2 4 0
  • Oracle:“instantclient”连接字符串格式是什么?

    它与常规连接字符串有何不同 与即时客户端的连接与与全栈客户端的连接没有什么不同 所有连接字符串格式都是相同的 如果您将即时客户端安装在文件系统上的非标准位置 或者在连接到数据库侦听器时遇到问题 请确保您的 TNS ADMIN 环境指向包含
  • PHP - 如何通过 Youtube API v3 更改 YouTube 视频的隐私状态?

    我需要知道如何更改 YouTube 视频的隐私状态 该视频的隐私状态为 不公开 我想更改为 公开 Here有一个向视频添加一些标签的示例 但我不知道如何应用该示例来更新隐私状态 谢谢你 我在将视频上传到 YouTube 时设置了隐私状态 我
  • chown:更改“/data/db”的所有权:不允许操作

    我们可以使用nfs卷插件来维护kubernetes集群之间的高可用性和灾难恢复吗 我正在使用 MongoDB 运行 pod 收到错误 chown 更改 data db 的所有权 不允许操作 云任何机构 请建议我如何解决该错误 或者 是否建议
  • 在 applicationDidEnterBackground 之前显示视图或启动屏幕(以避免活动视图屏幕截图)

    我的应用程序中有机密信息 因此我想在应用程序即将移至后台时使用启动屏幕隐藏它们 我确实在 iOS6 及更高版本上运行该应用程序 我尝试在中显示视图applicationWillResignActive但问题是 即使用户滑动控制面板 它也会显
  • 使用 unicode 粗俗分数创建紧凑/人性化的浮动

    是否有任何模块 最好在标准库中 可以将浮点数转换为更人性化的数字 也许它不是更人性化 但至少更紧凑 例如 4 625 将变成 4 以合理的精度识别 pi 可获得奖励积分 这个代码大纲是我能想到的最好的 import unicodedata
  • 如何将字典作为命令行参数传递给Python脚本?

    如何将字典作为命令行参数传递给Python脚本 我需要获取字典 其中键是字符串 值是某些元素的列表 例如看起来像 command line arguments names J J April years 25 29 我试过像 if name