由于this answer,可能需要执行此操作:
path = r"D:\Temp\abc[def]\ # (i have many others to process)
path = path.replace('[', '[[]').replace(']', '[]]')
# now we can use glob here with path
然而,第一个replace
与第二个replace
混淆,结果不符合预期,即D:\Temp\abc[[]def[]]\
。
我找到的唯一解决方案是使用临时字符~
来避免2 replace
相互混淆:
path = path.replace('[', '[[~').replace(']', '[]]').replace('~', ']')
有没有一种很好的方法可以使用2个替换而不会对第二个产生影响?
答案 0 :(得分:2)
您不需要替换]
。
Special characters to replace仅为'?'
,'*'
和'['
,由glob.escape
处理。
>>> print(glob.escape(path))
D:\Temp\abc[[]def]\