如何在MANIFEST.in文件中转义目录名中的空格?
我接手了一段代码,这段代码里的文件夹名字有空格,而且我不能改这个文件夹的名字。假设这个文件夹的名字是“embedded spaces”。
现在我想在一个叫做 MANIFEST.in 的文件里访问这个文件夹里的文件。
我试过以下几种方法:
recursive-include 'embedded spaces' *.dat
recursive-include "embedded spaces" *.dat
recursive-include embedded\ spaces *.dat
但是这些方法都报错,错误信息大概是“警告:在文件夹 'embedded' 下找不到匹配 'spaces' 的文件”。
我有一个变通的方法是:
recursive-include embedded* *.dat
不过我在想,是否有更简单的方法来处理 MANIFEST.in 文件夹名字中的空格。
2 个回答
0
试试这个命令:recursive-include embedded?spaces *.dat
。
2
看起来不是这样。查看一下 distutils.filelist
的源代码,这个代码负责解析 MANIFEST.in
文件,可以发现它是通过空格来分割每一行,以确定要执行的操作和相关参数。
以下是源代码(使用的是 Python 2.7):
def _parse_template_line(self, line):
words = line.split()
action = words[0]
...
if action in ('include', 'exclude',
'global-include', 'global-exclude'):
...
elif action in ('recursive-include', 'recursive-exclude'):
if len(words) < 3:
raise DistutilsTemplateError, \
"'%s' expects <dir> <pattern1> <pattern2> ..." % action
dir = convert_path(words[1])
patterns = map(convert_path, words[2:])
...