Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
371 views
in Technique[技术] by (71.8m points)

python - glob and bracket characters ('[]')

/Users/smcho/Desktop/bracket/[10,20] directory has "abc.txt", but when I run this Python code

import glob
import os.path

path1 = "/Users/smcho/Desktop/bracket/[10,20]"
pathName = os.path.join(path1, "*.txt")
print glob.glob(pathName)

It returns an empty list.

  • Can't Python's glob handle the bracket letters or others?
  • Is there any way to solve this problem?
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The brackets in glob are used for character classes (e.g. [a-z] will match lowercase letters). You can put each bracket in a character class to force them being matched:

path1 = "/Users/smcho/Desktop/bracket/[[]10,20[]]"

[[] is a character class containing only the character [, and []] is a character class containing only the character ] (the closing bracket can be placed in a character class by putting it in the first position).

Additionally, since brackets aren't escaped in string literals, your code will look for a backslash as well as a bracket.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...