Поиск функций трассировки файлов в Python, похожих на Java

В Java вы можете делать File.listFiles() и получать все файлы в каталоге. Затем вы можете легко выполнить рекурсию через деревья каталогов.

Есть ли аналогичный способ сделать это в Python?

9 Solutions collect form web for “Поиск функций трассировки файлов в Python, похожих на Java”

Да, есть. Путь Python еще лучше.

Существует три возможности:

1) Как и File.listFiles ():

Python имеет функцию os.listdir (путь). Он работает как метод Java.

2) расширение шаблона пути с помощью glob:

Модуль glob содержит функции для перечисления файлов в файловой системе с использованием шаблона Unix shell, например

 files = glob.glob ('/ usr / joe / *. gif')

3) Перемещение файла с помощью прохода:

Действительно приятная функция os.walk Python.

Метод walk возвращает функцию генерации, которая рекурсивно перечисляет все каталоги и файлы ниже заданного начального пути.

Пример:

 import os
 from os.path import join
 для root, dirs, файлов в os.walk ('/ usr'):
    print «Текущий каталог», root
    печать «Подкаталоги», dirs
    распечатать «Файлы», файлы

Вы можете даже на лету удалить каталоги из «dirs», чтобы не дойти до этого каталога: если «joe» в dirs: dirs.remove («joe»), чтобы не ходить в каталоги, называемые «joe».

listdir и walk описаны здесь . glob описан здесь .

Являясь долговременной Pythonista, я должен сказать, что функции обработки пути / файла в библиотеке std являются подпараметрами: они не являются объектно-ориентированными и отражают устаревшие, let-wrap-OS-system-functions-without- философия мышления. Я бы сердечно рекомендовал модуль «путь» в качестве обертки (вокруг os, os.path, glob и tempfile, если вы знаете): гораздо приятнее и OOPy: http://pypi.python.org/pypi/path.py /2.2

Это walk () с модулем пути:

 dir = path(os.environ['HOME']) for f in dir.walk(): if f.isfile() and f.endswith('~'): f.remove() 

Попробуйте «listdir ()» в модуле os ( docs ):

 import os print os.listdir('.') 

Прямо из библиотеки реферансов Python

 >>> import glob >>> glob.glob('./[0-9].*') ['./1.gif', './2.txt'] >>> glob.glob('*.gif') ['1.gif', 'card.gif'] >>> glob.glob('?.gif') ['1.gif'] 

Взгляните на os.walk() и примеры здесь . С помощью os.walk() вы можете легко обрабатывать все дерево каталогов.

Пример из приведенной выше ссылки …

 # Delete everything reachable from the directory named in 'top', # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) 

Используйте os.path.walk, если вы хотите также подкаталоги.

  walk (верх, func, arg)

         Дерево каталогов с функцией обратного вызова.

         Для каждого каталога в дереве каталогов, укорененном сверху (включая верхние
         сам, но исключая '.'  и «..»), вызовите func (arg, dirname, fnames).
         dirname - это имя каталога, а fnames - список имен
         файлы и подкаталоги в dirname (исключая «.» и «..»).  FUNC
         может изменить список имен fnames на месте (например, через del или slice assign),
         и прогулка будет возвращаться только в подкаталоги, имена которых остаются в
         fnames;  это может быть использовано для реализации фильтра или для наложения определенного
         порядок посещения.  Семантика не определена или требуется для аргумента arg,
         вне этого arg всегда передается func.  Его можно использовать, например, для прохождения
         шаблон имени файла или изменяемый объект, предназначенный для накопления
         статистика.  Передача None для arg является обычным явлением.

Я бы рекомендовал против os.path.walk поскольку он удаляется в Python 3.0. os.walk всяком случае, os.walk проще, или, по крайней мере, я нахожу его более простым.

Вы также можете проверить Unipath , объектно-ориентированную оболочку модулей os , os.path и shutil Python.

Пример:

 >>> from unipath import Path >>> p = Path('/Users/kermit') >>> p.listdir() Path(u'/Users/kermit/Applications'), Path(u'/Users/kermit/Desktop'), Path(u'/Users/kermit/Documents'), Path(u'/Users/kermit/Downloads'), ... 

Установка через магазин сыра:

 $ pip install unipath 

Видя, как я программировал в python в течение длительного времени, я много раз использовал модуль os и сделал свою собственную функцию для печати всех файлов в каталоге.

Код для функции:

 import os def PrintFiles(direc): files = os.listdir(direc) for x in range(len(files)): print("File no. "+str(x+1)+": "+files[x]) PrintFiles(direc) 
  • Проверка IPv6-адресов и канонизация
  • Существуют ли стандартные условные обозначения командной строки для тире и аргументов?
  • Что означает эта ошибка (используется SimpleHttpConnectionManager неправильно)?
  • Скомпилированные и интерпретируемые языки
  • Как сериализовать объект Java таким образом, чтобы его можно было десериализовать с помощью pickle (Python)?
  • Есть ли эквивалент Python's itertools для Java?
  • Члены класса - Java vs. Python
  • Вызов Python из Java через скриптовый движок (jython)?
  • Как найти оптимальное значение входного целого числа (X), чтобы максимально приблизиться к целевому выходу (Y)?
  • Какой langauge следует использовать для искусственного интеллекта в веб-проектах
  • Программно сохранить черновик в папке черновиков Gmail
  •  
    Interesting Posts for Van-Lav

    python matplotlib обновляет график рассеяния от функции

    Различия между статическими и переменными экземпляра в python. Они даже существуют?

    Python. Лучше иметь несколько методов или множество дополнительных параметров?

    Где символы амперсанда и вертикальной строки, используемые в Python?

    Python. В каком слове могут быть удалены самые последовательные буквы и по-прежнему быть словарем?

    Как поместить метку SQLAlchemy в результат арифметического выражения?

    Как я могу перевести следующее имя файла в регулярное выражение в Python?

    Создание всех дат в заданном диапазоне в python

    Переменная счетчика для класса

    Поверните Pandas DataFrame строк в гистограмму

    Как я мог установить hwm в шаблоне push / pull zmq?

    Python Как использовать ExcelWriter для записи в существующий рабочий лист

    Возможно ли понимание этого списка в Python?

    Могу ли я использовать механизм «как» в выражении if

    Как вызвать Python из R в ОС Windows?

    Python - лучший язык программирования в мире.