问题标签 [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 回答
6864 浏览

python - 使用python从txt中删除空格

我有一个 .txt 文件(从网站上抓取为预先格式化的文本),其中的数据如下所示:

我想删除列之间的所有额外空格(它们实际上是不同数量的空格,而不是制表符)。然后我还想用一些分隔符(制表符或管道,因为数据中有逗号)替换它,如下所示:

环顾四周,发现最好的选择是使用 regex 或 shlex 进行拆分。两个类似的场景:

0 投票
2 回答
2721 浏览

python - shlex:在 Python 3 中转义引号

我想拆分 ascii 文本

打印为 Python 字符串

进入

shlex.split(line)不起作用,给一个ValueError("No closing quotation").

我尝试添加wordchars如下:

但这又不是我的意图。

没有报价,一切都按预期工作:

如何解决这个问题?

编辑:我最接近的是:

这仍然不对。

编辑:示例字符串有些误导。它也应该能够分裂,比如说

shlexl1问题。

0 投票
1 回答
518 浏览

python - Python:subprocess.Popen().communicate() 将 SSH 命令的输出打印到标准输出,而不是返回输出

这是我的 python 终端的副本:

我希望输出是('myhost', None). 为什么输出没有存储在通信()的返回元组中?

0 投票
1 回答
28 浏览

python - 当 I/O 文件的名称必须更改时 Python 中的命令

好的,我已经找到了如何在 Python 中执行复杂的命令,这篇文章如何在 python 脚本中运行我自己的外部命令

它确实有效,但在我的情况下,我正在执行一个循环以及每次迭代的名称inputfilenameoutputfilename更改。我已经尝试过该解决方案,但它不起作用,因为它无法识别inputfilename.

在循环中,inputfilenamembr{:03}_20161110.grb1.format(i)i从 1 到 21 的循环中运行的位置。

谢谢你。

编辑:根据要求,循环是这样的:

循环探索目录并将mbr001mbr020命名inputfile为每个父目录。

gr_cp 是一个命令行工具,可以从inputfilenameto中提取一些变量outputfilename(如过滤器)。它就像任何其他 shell 命令一样。问题是在循环中它不能识别inputfilename.

0 投票
1 回答
134 浏览

python - Python:使用子进程和 Popen 打印输出

我有一个 python 程序,它将 cat 一个文件,然后仅当在输出中找到单词“oranges”时才打印输出。我想知道如果在输出中找到“橙子”,我怎么能扭转这个并且让程序不输出任何东西?

0 投票
1 回答
637 浏览

python - 使用 shlex.split 时保留引号

使用 shlex.split() 时如何保留“带空格的值”周围的引号?

谢谢

0 投票
0 回答
170 浏览

python - 如何知道 shlex.split 中的参数值

我有字符串变量 as --test abc -a a -b b c,这是我的 linux 脚本的参数。

我正在使用 pythonsubprocess来执行这个。

该字符串可能具有special类似backticor的字符'--test \"it's my test\" -a a -b b c在这种情况下,我必须使用pipes.quote来引用该值。

我可以使用拆分它shlex.split并拆分参数,我想知道

从列表中或shlex.split如何检查哪个是值,哪个是参数?

我可以检查startswith('-') or startswith('--'),但有没有机会,这个逻辑可能是错误的?

0 投票
0 回答
78 浏览

python - 使用 .Popen() 和 .shlex() 将文件加载到 deluge-console

我无法使用 .Popen() 和 .shlex() 获取通过 deluge-console 加载文件的脚本。我在 gnome-terminal 上使用 xubuntu 和 byobu。

def torrentLoad(url): #client_run = subprocess.Popen(['deluged']]) sourceList = torrentWrite(sortXML(url)) print(sourceList) for s in sourceList: sleep(2) delugeList = ['deluge-console', 'add', s] load = subprocess.Popen(delugeList, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = load.communicate() print(out, err) 变量 sourceList 包含解析 xml 并返回 torrent 文件位置列表的函数。(例如'/home/YOURHOME/Documents/torrents/file.torrent')

理论上这应该输入命令:deluge-console add /home/YOURHOME/Documents/torrents/file.torrent 直接到终端。请注意,我也在运行 Byobu。我不知道这是否会在其中发挥作用。

我得到的输出是nodda。Zilch。感谢您的帮助。

0 投票
1 回答
249 浏览

python - 重新创建 python 调用

是否可以从被调用的程序本身修补一个 python 程序的复制和粘贴调用?它不必是完全相同的调用字符串,但参数应该解析为相同的东西。

请注意' '.join(sys.argv),不幸的是,它不会削减它。这种方法的主要问题是它不能正确引用参数。考虑dummy.pyimport sys; print(sys.argv); print(' '.join(sys.argv))

运行python dummy.py "1 2"打印:

当然,如果我们复制后者,我们将得到不同的调用。将每个参数用引号括起来也不起作用。考虑dummy2.py

这将打破:

0 投票
0 回答
113 浏览

python - shlex 在卷曲/智能引号上拆分

通过在 Python 3.6.3 中使用shlex模块,尝试通过空格拆分字符串,同时保留用大括号/智能引号 (“”) 括起来的内容。但是,它不能正常工作:

使用普通引号 ("),按预期工作:

那么,如何让 shlex 使用 qurly/智能引号?