Вопрос по python – Как я могу перебирать файлы в данном каталоге?

372

Error: User Rate Limit Exceeded.asmError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Ваш Ответ

6   ответов
548

import os

for filename in os.listdir(directory):
    if filename.endswith(".asm") or filename.endswith(".py"): 
         # print(os.path.join(directory, filename))
        continue
    else:
        continue

osstrdirectory_in_str:

import os

directory = os.fsencode(directory_in_str)

for file in os.listdir(directory):
     filename = os.fsdecode(file)
     if filename.endswith(".asm") or filename.endswith(".py"): 
         # print(os.path.join(directory, filename))
         continue
     else:
         continue

pathlib:

from pathlib import Path

pathlist = Path(directory_in_str).glob('**/*.asm')
for path in pathlist:
     # because path is object not string
     path_in_str = str(path)
     # print(path_in_str)
print(os.path.join(directory, filename)) нужно изменить наprint(os.path.join(directory_in_str, filename)) заставить его работать в Python 3.6
Хороший ответ! Я могу добавить, что вам нужно импортировать Python & quot; os & quot; модуль с: - импорт ОС
Если вы видите это в 2017 году или позже, os.scandir (dir_str) теперь доступен и намного удобнее в использовании. Нет необходимости в fsencode.for entry in os.scandir(path): print(entry.path)
Похоже, это просто перечисляет каталоги или файлы непосредственно в каталоге. Ответ от pedromateo ниже, кажется, делает рекурсивный список.
Обратите внимание, что в Python 3.6 каталог, как ожидается, будет в байтах, а затем listdir будет выдавать список имен файлов также в байтовом типе данных, поэтому вы не можете запускать заканчивается с ним напрямую. Этот блок кода должен быть изменен наdirectory = os.fsencode(directory_in_str) for file in os.listdir(directory): filename = os.fsdecode(file) if filename.endswith(".asm") or filename.endswith(".py"): # print(os.path.join(directory, filename)) continue else: continue
9

from pathlib import Path

asm_pths = [pth for pth in Path.cwd().iterdir()
            if pth.suffix == '.asm']

asm_paths = []
for pth in Path.cwd().iterdir():
    if pth.suffix == '.asm':
        asm_pths.append(pth)

Path

2

DirectoryIndex._make(next(os.walk(input_path)))

import collections
import os

DirectoryIndex = collections.namedtuple('DirectoryIndex', ['root', 'dirs', 'files'])

for file_name in DirectoryIndex(*next(os.walk('.'))).files:
    file_path = os.path.join(path, file_name)
101

import os

for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        #print os.path.join(subdir, file)
        filepath = subdir + os.sep + file

        if filepath.endswith(".asm"):
            print (filepath)
Ссылка на функцию os.walk находится по следующему адресу:docs.python.org/2/library/os.path.html#os.path.walk
3

import os

path = 'the/name/of/your/path'

folder = os.fsencode(path)

filenames = []

for file in os.listdir(folder):
    filename = os.fsdecode(file)
    if filename.endswith( ('.jpeg', '.png', '.gif') ): # whatever file types you're using...
        filenames.append(filename)

filenames.sort() # now you have the filenames and can do something with them

NONE OF THESE TECHNIQUES GUARANTEE ANY ITERATION ORDERING

100

import glob

for filepath in glob.iglob('my_dir/*.asm'):
    print(filepath)

Похожие вопросы