私はディレクトリlogfilesを持っています。 Pythonスクリプトを使って、このディレクトリ内の各ファイルを処理したいと思います。ディレクトリ内のファイルをトラバースする方法は?
for file in directory:
# do something
どうすればよいですか?
私はディレクトリlogfilesを持っています。 Pythonスクリプトを使って、このディレクトリ内の各ファイルを処理したいと思います。ディレクトリ内のファイルをトラバースする方法は?
for file in directory:
# do something
どうすればよいですか?
os.listdir()
またはos.walk()
で、再帰的に実行するかどうかによって異なります。
import os.path
def print_it(x, dir_name, files):
print dir_name
print files
os.path.walk(your_dir, print_it, 0)
注:
あなたのような何かを試すことができos.path.walkの第三引数はあなたが好きです。あなたは、コールバックの第一引数としてそれを取得します
あなたはglob
を試みることができる:(私の知る限り)
import glob
for file in glob.glob('log-*-*.txt'):
# Etc.
しかしglob
は、再帰的に動作しませんので、あなたのログは、フォルダ内にある場合そのディレクトリの中で、あなたは何を見て良いでしょうIgnacio Vazquez-Abramsが投稿されました。
import os
# location of directory you want to scan
loc = '/home/sahil/Documents'
# global dictonary element used to store all results
global k1
k1 = {}
# scan function recursively scans through all the diretories in loc and return a dictonary
def scan(element,loc):
le = len(element)
for i in range(le):
try:
second_list = os.listdir(loc+'/'+element[i])
temp = loc+'/'+element[i]
print "....."
print "Directory %s " %(temp)
print " "
print second_list
k1[temp] = second_list
scan(second_list,temp)
except OSError:
pass
return k1 # return the dictonary element
# initial steps
try:
initial_list = os.listdir(loc)
print initial_list
except OSError:
print "error"
k =scan(initial_list,loc)
print " ..................................................................................."
print k
私は私のオーディオプレーヤーのプレイリスト機能を作るために、ディレクトリスキャナとしてこのコードを作り、それが再帰的にディレクトリに存在するすべてのサブディレクトリをスキャンします。
FYI:コードスペースを4つインデントするか、 '{} 'ボタンを使用してください - 詳細はhttp://stackoverflow.com/editing-helpを参照してください – McDowell
あなたはグロブは、リスト内のファイルの順序を気にしません
glob.glob("*.jpg") + glob.glob("*.png")
を使用し、複数のファイルタイプをチェックする必要がある場合。あなたはファイル名でソートされたファイルが必要な場合は、あなたが再帰的にこのようなディレクトリからすべてのファイルを一覧表示することができます
sorted(glob.glob("*.jpg"))
を使用しています。
from os import listdir
from os.path import isfile, join, isdir
def getAllFilesRecursive(root):
files = [ join(root,f) for f in listdir(root) if isfile(join(root,f))]
dirs = [ d for d in listdir(root) if isdir(join(root,d))]
for d in dirs:
files_in_d = getAllFilesRecursive(join(root,d))
if files_in_d:
for f in files_in_d:
files.append(join(root,f))
return files
import os
rootDir = '.'
for dirName, subdirList, fileList in os.walk(rootDir):
print('Found directory: %s' % dirName)
for fname in fileList:
print('\t%s' % fname)
# Remove the first entry in the list of sub-directories
# if there are any sub-directories present
if len(subdirList) > 0:
del subdirList[0]
これが原因 'os'は' PATH'を処理する方法に機能しますが、あなたは* *常に明示的に 'os.path'をインポートする必要があります。 –
固定!このコメントをありがとう。 – luc
@Ignacio Vazquez-Abrams: 'os'はモジュールです(パッケージではありません)。 'import os'はPython 2.4-3.2、jython、pypyで動作します。なぜあなたは 'os.path'をインポートする必要がありますか? – jfs