pythonでフォルダの中を見る時ファイル名、ディレクトリ名は欲しいけどパスは要らないって場合には何が一番よいやり方なのでしょうね...
例えばtestディレクトリに以下の様なファイルが存在するとして
test.csv
test.py
test.sh
test.txt
test1
test2
test3
glob
モジュールを使ったとするとこうなりますよね。
>>> import glob
>>> glob.glob('test/*')
['test/test.csv', 'test/test.py', 'test/test.sh', 'test/test.txt', 'test/test1', 'test/test2', 'test/test3']
ただ、理想としては
>>> import hoge
>>> hoge.hoge('test/*')
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
このようになって欲しいのです。
以下の様な方法もありますが、ワイルドカード指定が出来ないのは辛い。
>>> import os
>>> os.listdir('test/')
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
以上を踏まえて私が思いついたのは以下の3つ
その中でもよく使うのがcommands
を使う方法です。
>>> import commands
>>> commands.getoutput('ls test/* | xargs -n 1 basename').split("\n")
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
他にはやはりglob
モジュールで得たpathのbasenameだけ得るのが正攻法でしょうか。
>>> import glob
>>> [r.split('/')[-1] for r in glob.glob('test/*')]
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
>>> import glob, os
>>> [os.path.basename(r) for r in glob.glob('test/*')]
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
皆様はどのようにしているのか気になったのでとりあえず自分の方法を書いてみました。
なにかいい方法があればご教授下さい。