Ответ 1
Я бы использовал os.walk
следующее:
def getInfos(currentDir):
infos = []
for root, dirs, files in os.walk(currentDir): # Walk directory tree
for f in files:
infos.append(FileInfo(f,root))
return infos
Я только начинаю с Python, но уже нашел его намного более продуктивным, чем Bash shell scripting.
Я пытаюсь написать Python script, который будет перемещаться по каждому каталогу, который ведёт из каталога, в который я запускаю script, и для каждого найденного файла загружает экземпляр этого класса:
class FileInfo:
def __init__(self, filename, filepath):
self.filename = filename
self.filepath = filepath
Атрибут filepath будет полным абсолютным путем от root (/). Здесь макет псевдокода для того, что я хотел бы сделать главной программе:
from (current directory):
for each file in this directory,
create an instance of FileInfo and load the file name and path
switch to a nested directory, or if there is none, back out of this directory
Я читал о os.walk() и ok.path.walk(), но мне бы хотелось, чтобы некоторые советы о том, какой самый простой способ реализовать это в Python. Спасибо заранее.
Я бы использовал os.walk
следующее:
def getInfos(currentDir):
infos = []
for root, dirs, files in os.walk(currentDir): # Walk directory tree
for f in files:
infos.append(FileInfo(f,root))
return infos
Try
info = []
for path, dirs, files in os.walk("."):
info.extend(FileInfo(filename, path) for filename in files)
или
info = [FileInfo(filename, path)
for path, dirs, files in os.walk(".")
for filename in files]
чтобы получить список из одного экземпляра FileInfo
для каждого файла.
Попробуйте
import os
для элемента в os.walk( ".", "*" ):
print item