如何在IPython中禁用通配符扩展?

1 投票
1 回答
527 浏览
提问于 2025-04-18 15:31

有没有人知道怎么在IPython中关闭通配符扩展功能?

比如说,在使用Python 3和IPython 2.1.0的时候,如果能用类似下面的方式来运行或调试脚本就好了:

%run script.py "files1*.txt" "files2*.txt"

在IPython外面运行同样的命令是没问题的,但在IPython中,它会自动把通配符表达式展开,即使这些表达式被引号包起来,结果就是输入参数变成了一长串。

在IPython中调试是很不错的,但在这种情况下就变得很麻烦。有人知道怎么关闭通配符扩展吗?

1 个回答

4

关于 %run 的内联 ? 文档中提到:

参数会像在命令行中那样进行匹配。可以使用一些特定的模式,比如 '*'(代表任意多个字符)、'?'(代表一个字符)、'[seq]'(代表序列中的任意一个字符)和'[!seq]'(代表不在序列中的任意一个字符)。另外,波浪号 '~' 会被替换为用户的主目录。与真实的命令行不同的是,使用引号并不会阻止这些替换。如果你想要阻止替换,可以使用两个反斜杠(例如 \\*)。如果你想完全禁用这些替换,可以使用 -G 这个选项。

所以,你可以选择使用 -G 选项,或者用双反斜杠来转义 *

你可以在网上查看到相同的文档(格式不同),链接是 关于 run 魔法命令的完整文档

撰写回答