難しいことはできませんが、私は精神障害を抱えています。
import os
os.listdir("path") # returns list
一方通行:
import os
os.listdir("/home/username/www/")
別の方法 :
glob.glob("/home/username/www/*")
ここにある例 。
上記のglob.glob
メソッドは、隠しファイルをリストしません。
私が数年前にこの質問に最初に答えたので、 pathlib がPythonに追加されました。現在、ディレクトリをリストする私の好ましい方法は、通常iterdir
オブジェクトのPath
メソッドを含んでいます:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
os.walk
は、再帰が必要な場合に使用できます。
import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
for filename in files:
print os.path.join(path,filename)
glob.glob
またはos.listdir
が実行します。
os
module はすべてのものを処理します。
os.listdir(path)
Pathで指定されたディレクトリ内のエントリの名前を含むリストを返します。リストは任意の順序です。特別なエントリ「。」は含まれません。ディレクトリに存在する場合でも、「..」。
可用性:Unix、Windows。
Python 3.4+では、新しい pathlib
パッケージを使用できます。
from pathlib import Path
for path in Path('.').iterdir():
print(path)
Path.iterdir()
はイテレータを返します。イテレータはlist
に簡単に変換できます。
contents = list(Path('.').iterdir())
Python 3.5以降では、os.scandir
を使用できます。
違いは、名前ではなくファイルentriesを返すことです。 Windowsなどの一部のOSでは、os.path.isdir/file
がファイルかどうかを知る必要がなく、Windowsでディレクトリをスキャンするときにstat
がすでに実行されているため、CPU時間を節約できます。
ディレクトリをリストし、max_value
バイトより大きいファイルを印刷する例:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(私のパフォーマンスに関する広範な回答をお読みください here )
以下のコードは、ディレクトリとディレクトリ内のファイルをリストします。もう1つはos.walkです
def print_directory_contents(sPath):
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)