Как получить абсолютные пути всех файлов в каталоге, которые могут иметь много подпапок в Python?
Я знаю, что os.walk()
рекурсивно дает мне список каталогов и файлов, но это не похоже на то, что я хочу.
Как получить абсолютные пути всех файлов в каталоге, которые могут иметь много подпапок в Python?
Я знаю, что os.walk()
рекурсивно дает мне список каталогов и файлов, но это не похоже на то, что я хочу.
os.path.abspath
гарантирует, что путь является абсолютным. Используйте следующую вспомогательную функцию:
import os
def absoluteFilePaths(directory):
for dirpath,_,filenames in os.walk(directory):
for f in filenames:
yield os.path.abspath(os.path.join(dirpath, f))
import os
for root, dirs, files in os.walk(os.path.abspath("../path/to/dir/")):
for file in files:
print os.path.join(root, file)
Try:
import os
for root, dirs, files in os.walk('.'):
for file in files:
p=os.path.join(root,file)
print p
print os.path.abspath(p)
print
Вы можете использовать os.path.abspath()
, чтобы превратить относительные пути в абсолютные пути:
file_paths = []
for folder, subs, files in os.walk(rootdir):
for filename in files:
file_paths.append(os.path.abspath(os.path.join(folder, filename)))
Если у вас есть Python 3.4 или новее, вы можете использовать pathlib
(или сторонний backport, если у вас установлена более старая версия Python ):
import pathlib
for filepath in pathlib.Path(directory).glob('**/*'):
print(filepath.absolute())
Я хотел сохранить данные в подкаталоге, а не файлы, и хотел, чтобы в них были только субдиры с одним XML файлом. Я могу сделать это следующим образом:
for rootDirectory, subDirectories, files in os.walk(eventDirectory):
for subDirectory in subDirectories:
absSubDir = os.path.join(rootDirectory, subDirectory)
if len(glob.glob(os.path.join(absSubDir, "*.xml"))) == 1:
print "Parsing information in " + absSubDir