问题标签 [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.

0 投票
0 回答
38 浏览

python - Python shlex posix 使用困境

我在改进我的 ECAD 软件(即 KiCad)的半自动化库管理时遇到了这个困境,下面的内容只是一个示例,我希望它代表我遇到的问题。

库文件包含多行,有时该行可以在其中一个字段中嵌入双引号,这是通过添加转义\字符来管理的。例如:

将输出:

我需要使用 shlex 拆分这个字符串(这是选择的解决方案,我想保留它),遵循这两个条件:

  1. “这是……问题”必须是单个列表项
  2. 需要保留“这个...问题”和“困难”周围的双引号。

注意:在这个例子中,另外两个词pleasehelp不需要特殊处理。

我已经尝试过两者posix=Falseposix=True

  • 使用posix=False

输出:

  • 使用posix=True

输出:

在第一种情况下,您可以立即看到它不满足条件 #1。

在第二种情况下,它几乎满足了这两个条件,但未能保留“这是……问题”周围的双引号。我不能只在拆分后添加它们,因为我不知道字符串在列表中的位置,并且我不想将双引号添加到所有条目。

有没有解决这个问题的窍门,还是我只是碰壁了?

我真的很感激帮助!

0 投票
1 回答
41 浏览

python - 在python中使用shlex分割字符串时保留“\t”、“\n”、“\r”

我正在尝试使用 shlex 拆分字符串,但我想保留(字面意思)“\t”、“\n”、“\r”。

例子:

但我想打印这个:

我可以使用 shlex 做到这一点吗?

/安杰洛斯

0 投票
0 回答
444 浏览

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 文件?

0 投票
1 回答
85 浏览

python-3.x - 防止 shlex 用冒号 (:) 拆分

我在处理 shlex 中的冒号 (:) 时遇到问题。我需要以下行为:

样本输入

期望的输出

电流输出

Shlex 将冒号放在一个单独的标记中,我不希望这样。该文档没有太多关于冒号的说明。我试图将它添加到 wordchar 属性中,但它把所有东西都弄乱了,并且用逗号分隔了单词。我还尝试将 punctuation_char 属性设置为只有括号的自定义数组: ["(", ")"] 但它没有区别。我需要设置 punctuation_char 选项以将括号作为单独的标记(或实现此输出的任何其他选项)。

任何人都知道我怎么能让这个工作?任何帮助将不胜感激。我正在使用 python 3.6.9,如有必要可以升级到 python 3.7.X。

0 投票
2 回答
890 浏览

python-3.x - 如何在 Python 中执行 curl 命令并获取响应并将其传递给其他代码

我有一个 curl 命令。我想在 Python 中执行并获取响应以通过其他代码传递它。

如何在 Python 中执行脚本并获取响应并通过其他代码传递它?

当我在 CMD 中执行 curl 脚本时,我收到以下响应:

从上面的响应中,我需要access_token取值。

0 投票
1 回答
233 浏览

python - 用分号分隔时,Shlex 不会正确地将多个连续命令传递给子进程

我有两个文件夹。我创建了如下临时文件

现在我可以执行以下find命令和rm所需的文件。

我的要求是我应该能够find使用Subprocess.Popen. 但它会引发错误。

test.py

我得到的输出如下

我注意到;原始命令中缺少 a 。因此,当我将其更改cmds为以下内容时,

我得到以下输出

我不确定我哪里出错了。

注意:我没有将字符串直接传递给子进程的选项。代码库的方式使我无法修改该部分。我必须将其作为字符串传递,该字符串被解析shlex.split()并传递给 Subprocess。我也没有find一个一个传递多个命令的选项,这意味着我不能多次调用 API,我应该一口气传递它。

0 投票
0 回答
80 浏览

python-3.x - 尝试使用 Python 在包含括号的路径中创建文件时出错

谁能发现为什么这会失败?

我得到这个回溯

我想我对posix路径的理解不够好,无法理解发生了什么。如果我从路径中的目录名称中取出括号,它就可以正常工作。shlex.quote() 正在添加额外的双引号层,这似乎破坏了一些东西。

0 投票
1 回答
91 浏览

python - 如何可靠地使用 Fabric 的 cd() 上下文管理器

我正在尝试在远程系统的目录中运行 find 命令。Fabric 有时会更改目录,但有时会失败,具体取决于路径是否包含括号或空格以及我是否使用 shlex.quote() 。处理这个问题的正确方法是什么?

我的代码基本上是这样的:

如果我使用条件 1,则当路径包含括号时它会成功。在这种情况下,Fabric 会生成这一行:

但是当路径包含空格时它会失败,因为空格被转义但路径也被引用,而不仅仅是一个或另一个。

如果我改为使用条件 2,则第一个路径失败,第二个路径成功。

0 投票
0 回答
1162 浏览

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)。

我的代码似乎根本没有运行,因为在将参数传递给自定义脚本之前出现错误。这是我通过运行命令获得的堆栈跟踪:

0 投票
1 回答
353 浏览

python - 拆分参数,如 shlex.split 但转换环境变量

我想将字符串拆分为命令行参数,就像 shlex.split 一样。但是,shlex 似乎并没有转换环境变量(例如$USER),并且输出使得无法知道环境变量是否被转义:

有没有办法做到这一点?(希望没有重新实现整个事情)

另外,为什么 shlex.split 首先默认不这样做?

如果重要的话,我使用的是 Python 3.6.8。