问题标签 [shlex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python shlex posix 使用困境
我在改进我的 ECAD 软件(即 KiCad)的半自动化库管理时遇到了这个困境,下面的内容只是一个示例,我希望它代表我遇到的问题。
库文件包含多行,有时该行可以在其中一个字段中嵌入双引号,这是通过添加转义\
字符来管理的。例如:
将输出:
我需要使用 shlex 拆分这个字符串(这是选择的解决方案,我想保留它),遵循这两个条件:
- “这是……问题”必须是单个列表项
- 需要保留“这个...问题”和“困难”周围的双引号。
注意:在这个例子中,另外两个词please
和help
不需要特殊处理。
我已经尝试过两者posix=False
和posix=True
:
- 使用
posix=False
输出:
- 使用
posix=True
输出:
在第一种情况下,您可以立即看到它不满足条件 #1。
在第二种情况下,它几乎满足了这两个条件,但未能保留“这是……问题”周围的双引号。我不能只在拆分后添加它们,因为我不知道字符串在列表中的位置,并且我不想将双引号添加到所有条目。
有没有解决这个问题的窍门,还是我只是碰壁了?
我真的很感激帮助!
python - 在python中使用shlex分割字符串时保留“\t”、“\n”、“\r”
我正在尝试使用 shlex 拆分字符串,但我想保留(字面意思)“\t”、“\n”、“\r”。
例子:
但我想打印这个:
我可以使用 shlex 做到这一点吗?
/安杰洛斯
python - 如何在 Windows 上引用路径?(类似于 shlex.quote)
我需要以可移植的方式引用路径,shlex.quote
将斜杠转换为/
Windows,这会导致命令失败(使用默认的 Windows 命令提示符)。
返回C:/Users/Me/Documents/Projects/Test
代替C:\Users\Me\Documents\Projects\Test
如何在 Windows 上引用路径,类似于shlex.quote
使用本机斜杠,适用于 Windows 命令提示符和 BAT 文件?
python-3.x - 防止 shlex 用冒号 (:) 拆分
我在处理 shlex 中的冒号 (:) 时遇到问题。我需要以下行为:
样本输入
期望的输出
电流输出
Shlex 将冒号放在一个单独的标记中,我不希望这样。该文档没有太多关于冒号的说明。我试图将它添加到 wordchar 属性中,但它把所有东西都弄乱了,并且用逗号分隔了单词。我还尝试将 punctuation_char 属性设置为只有括号的自定义数组: ["(", ")"] 但它没有区别。我需要设置 punctuation_char 选项以将括号作为单独的标记(或实现此输出的任何其他选项)。
任何人都知道我怎么能让这个工作?任何帮助将不胜感激。我正在使用 python 3.6.9,如有必要可以升级到 python 3.7.X。
python-3.x - 如何在 Python 中执行 curl 命令并获取响应并将其传递给其他代码
我有一个 curl 命令。我想在 Python 中执行并获取响应以通过其他代码传递它。
如何在 Python 中执行脚本并获取响应并通过其他代码传递它?
当我在 CMD 中执行 curl 脚本时,我收到以下响应:
从上面的响应中,我需要access_token
取值。
python - 用分号分隔时,Shlex 不会正确地将多个连续命令传递给子进程
我有两个文件夹。我创建了如下临时文件
现在我可以执行以下find
命令和rm
所需的文件。
我的要求是我应该能够find
使用Subprocess.Popen
. 但它会引发错误。
test.py
我得到的输出如下
我注意到;
原始命令中缺少 a 。因此,当我将其更改cmds
为以下内容时,
我得到以下输出
我不确定我哪里出错了。
注意:我没有将字符串直接传递给子进程的选项。代码库的方式使我无法修改该部分。我必须将其作为字符串传递,该字符串将被解析shlex.split()
并传递给 Subprocess。我也没有find
一个一个传递多个命令的选项,这意味着我不能多次调用 API,我应该一口气传递它。
python-3.x - 尝试使用 Python 在包含括号的路径中创建文件时出错
谁能发现为什么这会失败?
我得到这个回溯
我想我对posix路径的理解不够好,无法理解发生了什么。如果我从路径中的目录名称中取出括号,它就可以正常工作。shlex.quote() 正在添加额外的双引号层,这似乎破坏了一些东西。
python - 如何可靠地使用 Fabric 的 cd() 上下文管理器
我正在尝试在远程系统的目录中运行 find 命令。Fabric 有时会更改目录,但有时会失败,具体取决于路径是否包含括号或空格以及我是否使用 shlex.quote() 。处理这个问题的正确方法是什么?
我的代码基本上是这样的:
如果我使用条件 1,则当路径包含括号时它会成功。在这种情况下,Fabric 会生成这一行:
但是当路径包含空格时它会失败,因为空格被转义但路径也被引用,而不仅仅是一个或另一个。
如果我改为使用条件 2,则第一个路径失败,第二个路径成功。
python - wsl 2 上的 pipenv 自定义脚本:shlex.py instream 对象没有读取属性
我将我的 python 项目从本机 Linux 安装移动到 Windows,并尝试通过 Windows 10 上的 WSL 2 使用pipenv run my_script
. 尽管相同的命令在本机 Ubuntu 安装中有效,但在 WSL 2 (Ubuntu 20.04) 上,我在 shlex 模块中收到关于没有读取属性的流内对象的属性错误。
我在 Pipfile 中的 [scripts] 部分看起来像这样,但我也尝试过运行 python 脚本(而不是 shell 脚本),并且可以使用任何自定义脚本重现该错误。
我也尝试更新 pipenv 包,但看起来我正在运行最新版本(11.9.0,pipenv-2020.6.2)。
我的代码似乎根本没有运行,因为在将参数传递给自定义脚本之前出现错误。这是我通过运行命令获得的堆栈跟踪:
python - 拆分参数,如 shlex.split 但转换环境变量
我想将字符串拆分为命令行参数,就像 shlex.split 一样。但是,shlex 似乎并没有转换环境变量(例如$USER
),并且输出使得无法知道环境变量是否被转义:
有没有办法做到这一点?(希望没有重新实现整个事情)
另外,为什么 shlex.split 首先默认不这样做?
如果重要的话,我使用的是 Python 3.6.8。