gpt4 book ai didi

python - 如何使用 argparse 添加对 Python 脚本多行参数的支持?

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:20 24 4
gpt4 key购买 nike

我刚刚创建了a Python project使用 argparse 来解析参数。但似乎不支持多行参数。可以查看example/command-line.sh在项目中,会发现看不懂下面的样式

#!/bin/bash
../scripts_gen.py --template template.txt \
--save-to scripts \
--param "{'data':'datasets.txt', \
'lambda':[`echo 0.{0..9}|sed -E 's/\s+/,/g'`], \
'seed':[233,874]}" \
--format "{data}_lambda={lambda}_seed={seed}.sh" \
--delete

请注意,这在 shell 脚本中是合法的:人们总是可以这样写

$ ls -l \
> -f

在控制台或 shell 脚本文件中(本例中没有提示)。那么我可以通过 argparse 添加对此的支持吗?谢谢。

最佳答案

根据我的评论进行事后答复:

  1. 问题出在您的 bash 脚本中。如果它按预期工作,Python 甚至不知道参数之间有换行符——shell 会处理它并删除换行符。第一个反斜杠后面很可能有一个空格。

  2. 但是由于同一个文件在 Debian 上运行正常,但在 cygwin 下失败,所以反斜杠后面不是空格。也许是脚本中的行结尾有问题?

  3. 所以,问题是由 git 自动进行 CR/LF 转换,再加上 cygwin 奇怪地拒绝理解其主机的行结束约定操作系统。虽然您通过手动将脚本转换回 unix 行结尾来修复它,但我会推荐一个更强大的解决方案:您可以在 cygwin 中启用 CR/LF 支持(因为您暗示它是一个选项),但我的偏好是还禁用 git 的 CR/LF 映射。并检查所有常用工具和编辑器是否配置为正确处理这两种行结束符。

关于python - 如何使用 argparse 添加对 Python 脚本多行参数的支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com