问题标签 [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 投票
6 回答
10467 浏览

python - shlex.split 的反面是什么?

我怎样才能扭转 a 的结果shlex.split?也就是说,在给定我希望引用的字符串的情况下,如何获得一个“类似于 Unix shell”的带引号的字符串?list

更新0

我找到了一个 Python 错误,并在此处提出了相应的功能请求。

0 投票
2 回答
3162 浏览

python - 使 shlex.split 尊重 UNC 路径

shlex.split用来标记subprocess.Popen调用的参数。但是,当其中一个 args 是 UNC 路径时,事情就会变得棘手:

生产

如您所见,前面的反斜杠被剥离了。我正在通过添加以下两行来解决这个问题,但是有更好的方法吗?

0 投票
1 回答
181 浏览

python - elisp 相当于 python shlex.split?

我需要在 elisp 中解析一个命令行,例如:

我怎样才能以简单的方式做到这一点?

0 投票
2 回答
21023 浏览

python - Python shlex.split(),忽略单引号

在 Python 中,我如何使用shlex.split()或类似于拆分字符串,只保留双引号?例如,如果输入是,"hello, world" is what 'i say'那么输出将是["hello, world", "is", "what", "'i", "say'"]

0 投票
1 回答
5004 浏览

python - 通配符在使用 shlex 的子进程调用中不起作用

语言:Python v2.6.2

操作系统:AIX 5.3

我正在使用 Python 将一些文件从备份恢复到测试系统 - 所有命令都以下面的方式调用,但是有些命令根本不想工作。

如果我从命令中删除 *,它们可以正常工作(好吧,它们可以在没有通配符的情况下正常工作,不幸的是,这不是我想要的)。

出于明显的安全原因,我真的不想使用 shell=True ,但是还有一些其他命令基本上做同样的事情。如果命令中有通配符,它​​就不起作用——它执行没有错误,只是什么都不做。

有趣的是以下命令(通过 shlex 解析):

产生以下内容:

mv: 0653-401 无法将 /work/testrestore/production/* 重命名为 /work/TESTC/*:路径名中的文件或目录不存在。

就好像 unix 现在正在尝试移动一个名为 * 的文件,而不是使用 * 作为通配符。这是 shlex 的典型行为吗?

编辑:我尝试用 \ 转义 *,还尝试从单引号更改为双引号。我并不希望这样做。

0 投票
1 回答
497 浏览

python - 在 Haskell 中拆分类似 shell 的语法?

如何在 Haskell 中以 shell 样式的语法拆分字符串?Python 中的等价物是shlex.split.

0 投票
2 回答
23486 浏览

python - Windows 和 linux 中的 subprocess.Popen 和 shlex.split 格式

我正在编写一个包装器来通过 Python(2.7.2)自动化一些 android ADB shell 命令。因为在某些情况下,我需要异步运行命令,所以我使用subprocess .Popen方法来发出 shell 命令。

我遇到了方法[command, args]参数格式的问题Popen,其中需要命令/参数拆分在 Windows 和 Linux 之间是不同的:

我试过使用shlex .split(),有和没有 posix 标志:

两种情况都返回相同的拆分。

subprocess是否有正确shlex处理特定于操作系统的格式的方法?

这是我目前的解决方案:

我不认为shlex.split()在这里做任何事情,并cmd.split()取得相同的结果。

0 投票
1 回答
579 浏览

python - 解析这种脚本语言的最有效方法

我正在为一个过时的文本编辑器的脚本语言实现一个解释器,我在让词法分析器正常工作时遇到了一些麻烦。

这是该语言有问题的部分的示例:

这些/字符似乎引用了字符串,并且还充当 -type 语法中C( CHANGE) 命令的分隔符sed,尽管它允许任何字符作为分隔符。

parse_tokens(line.split())到目前为止,我可能已经实现了大约一半最常见的命令。这又快又脏,但效果却出奇的好。

为了避免编写我自己的词法分析器,我尝试了shlex.

它工作得很好,除了以下CHANGE情况:

任何人都知道一个简单的方法来完成这个(用shlex或其他)?

编辑:

如果有帮助,这里是CHANGE帮助文件中给出的命令语法:

同样难以标记XY命令:

0 投票
2 回答
2792 浏览

python - 使用 Python 通过 ssh 将文件分类到远程 bash 脚本

我正在使用带有 shlex 的 subprocess.popen 来使用 ssh 调用远程 bash 脚本。该命令在 bash 本身上运行良好。但是,一旦我尝试使用 subprocess.popen 将其转换为 python 和 shlex,它就会出错。

远程 bash 脚本:

BASH CMD 结果(在命令行调用远程 bash 脚本)

Python代码

Python脚本结果

我错过了什么?

0 投票
1 回答
491 浏览

python - Python shlex.split 函数的 Powershell 替代方案

我正在寻找 Powershell 的 python shlex.split() 函数的替代方法。到目前为止,谷歌还没有帮助我。

如果您不知道此函数的作用,它允许您将字符串拆分为多个“字段”列表,但不包括带引号的子字符串。

例如:

以下字符串: 我对此“没有灵感”

将按以下方式拆分:我,有,没有灵感,因为,这个

我想为此切换到 powershell 的原因是避免在我们的生产 Windows 服务器上安装 python。

提前致谢