Python

Filename expansion with glob

The glob module finds all the pathnames matching a specified pattern according to the rules used by the Unix shell, although results are returned in arbitrary order.

Trong pattern sử dụng các ký tự đặc biệt sau:

  • * – Có thể có hoặc không có các ký tự.
  • ? – Phải có duy nhất một ký tự.
  • [ ] – Phải có một ký tự thuộc character range.

Function:

pathList = glob.glob(pathname, *, recursive=False)

Return a possibly-empty list of path names that match pathname, which must be a string containing a path specification.

Trong đó:

  • pathname – đường dẫn đến các file tuân theo một pattern cụ thể;
  • pathList – kết quả trả về là một list chứa các file có đường dẫn thỏa mãn pattern.
  • Nếu recursive = True, pattern ** sẽ match tất cả file, directory và sub-directories.

Example 1: Trong folder C:\Users\T\Desktop\tester tôi đã tạo các file sau: fish-.jpg, fish-1.jpg, fish-2.jpg, fish-3.jpg, fish-4.jpg, fish-5.jpg, fish-10.jpg, fish-234.jpg, fish-99.jpg, test.c, test.exe, testcmd.c và testcmd.exe.

>>> import glob
>>> # test * character
...
>>> glob.glob("C:\\Users\\T\\Desktop\\tester\\*.*")
['fish-.jpg', 'fish-1.jpg', 'fish-2.jpg', 'fish-3.jpg', 'fish-4.jpg',
'fish-5.jpg', 'fish-10.jpg', 'fish-234.jpg', 'fish-99.jpg', 'test.c',
'test.exe', 'testcmd.c', 'testcmd.exe']
>>> # test ? character
...
>>> glob.glob("C:\\Users\\T\\Desktop\\tester\\*.?")
['test.c', 'testcmd.c']
>>> # test [ ] character range
...
>>> glob.glob("C:\\Users\\T\\Desktop\\tester\\fish-[2-4].jpg")
['fish-2.jpg', 'fish-3.jpg', 'fish-4.jpg']
>>> # combination of ?, * and [ ]
...
>>> glob.glob("C:\\Users\\T\\Desktop\\tester\\fish-[1-3]*.jpg")
['fish-1.jpg', 'fish-10.jpg', 'fish-2.jpg', 'fish-234.jpg', 'fish-3.jpg']
>>> glob.glob("C:\\Users\\T\\Desktop\\tester\\fish-[1-3]?.jpg")
['fish-10.jpg']
>>> glob.glob("C:\\Users\\T\\Desktop\\tester\\fish-*[1-3].jpg")
['fish-1.jpg', 'fish-2.jpg', 'fish-3.jpg']
>>> glob.glob("C:\\Users\\T\\Desktop\\tester\\fish-?[1-3].jpg")
[]

Reference:
[1] glob — Unix style pathname pattern expansion.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s