Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

glob and bracket characters ('[]')

Tags:

python

glob

/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?
like image 918
prosseek Avatar asked Apr 07 '10 19:04

prosseek


1 Answers

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.

like image 67
interjay Avatar answered Sep 19 '22 02:09

interjay