LoginSignup
15
13

More than 5 years have passed since last update.

globを使ったフォルダ内のファイルネームの取得

Posted at

フォルダ内のファイル名を簡単に取得したい時によく使います。
ソースはこちらhttp://svn.python.org/view/python/branches/release27-maint/Lib/glob.py?view=markup
下記のようなフォルダがあったとすると、

terminal.
$ ls
0.csv       2.txt       5.csv       7.txt       test_glob.py
0.txt       3.csv       5.txt       8.csv
1.csv       3.txt       6.csv       8.txt
1.txt       4.csv       6.txt       9.csv
2.csv       4.txt       7.csv       9.txt
サンプル
test_glob.py
   import glob
   text_fnames = glob.glob('./*.txt')
   print text_fnames
実行
output.
$ python test_glob.py 
['./0.txt', './1.txt', './2.txt', './3.txt', './4.txt', './5.txt', './6.txt', './7.txt', './8.txt', './9.txt']

このように、*.txtとすることでファイル内のtxtファイルを簡単に取得できます。

解説

glob.globの引数は文字列で、書き方はシェルと一緒です。
引数には、相対パス、絶対パスの両方が使えます。

また、glob.globglob.iglobとすれば、イテレータがかえってきます。
ファイルの数が膨大になる時以外は、glob.globのみで足りると思います。

ソースの中身的には、glob.iglobyeildで一つづつファイルネームを生み出してる。
glob.glob(pathname)はただ単にlist(glob.iglob(pathname) )としてる感じです。
あとは、osモジュールを使って、検索するだけの簡単なコードになっています。

15
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
13