使用PyCharm进行调试并支持bash globbing

n8ghc7c1  于 2022-11-08  发布在  PyCharm
关注(0)|答案(2)|浏览(188)

我的Python脚本用于迭代所有作为参数给出的文件,用法如下:

usage: make_it_so.py [-h] filename [filename ...]

Make this and that

positional arguments:
  filename

optional arguments:
  -h, --help  show this help message and exit

为了运行它,我倾向于使用bash globbing,因为有多个文件。而且,我喜欢对任何脚本进行压力测试,以确保它在包含空格的文件夹和文件中正常工作,如下所示:

user@host:~$ ./make_it_so.py /path\ containing\ whitespaces/*.csv

user@host:~$ ./make_it_so.py '/path containing whitespaces/*.csv'

到目前为止,我主要使用纯文本编辑器和终端进行编程。但现在我想使用像PyCharm这样的IDE来更方便地调试脚本。我的问题来了:

如何配置调试配置

  • 或者使用文件全局绑定,或者
  • 用空格设置多个文件路径参数?

(See下面是我的调试配置示例。)

我在脚本中得到的参数列表不是我所期望的:

['/path', 'containing', 'whitespaces/*.csv', "'/path", 'containing', 'whitespaces/1st', "file.csv'", '/path\\', 'containing\\', 'whitespaces/2nd', 'file.csv']

相反我会期望:

['/path containing whitespaces/1st file.csv', '/path containing whitespaces/2nd file.csv']

我知道PyCharm的调试配置中的 parameters 输入字段不是bash。但我希望它可以传递包含空格的参数。-有什么建议吗?

axzmvihb

axzmvihb1#

如果PyCharm没有扩展您的globs,那么它就没有运行shell来运行您的脚本,这是完全可以理解的。(pstree很适合)。找到PyCharm及其子对象,您将很快了解在它和运行代码的python解释器之间是否存在bash或其他shell。
我现在没有PyCharm来测试,但是我会尝试说服我的IDE(我使用PyDev)来做一件事,那就是用类似bash -c "python /home/user/make_it_so.py"的东西替换/home/user/make_it_so.py。不能保证这会起作用(事实上,我有点怀疑,因为PyCharm可能需要知道源文件的路径来调试它)。
如果这样做不起作用,我会尝试编写一个小的runner,其中包含如下内容:

import subprocess
subprocess.Popen('bash -c "python /home/user/make_it_so.py"')

并在调试器中运行。
同样,如果它能工作,我会印象深刻,但它可能会。无论如何,除非PyCharm专业人士介入帮助您解决这个问题,否则我希望这种思路在某种程度上是有帮助的。当然,pstree可以帮助您理解PyCharm是如何运行脚本的。

t2a7ltrp

t2a7ltrp2#

您可以只使用集成的终端并手动执行make_it_so.py。

相关问题