Найти файл в папке, не зная расширения? - PullRequest
2 голосов
/ 27 июня 2011

Допустим, я хочу найти имя файла «myfile» в папке с именем «myfolder», как я могу это сделать, не зная формата файла?Другой вопрос: как перечислить все файлы папки и всех файлов ее подпапок (и так далее)?Спасибо.

Ответы [ 5 ]

4 голосов
/ 27 июня 2011
import os
import glob
 
path = 'myfolder/'
for infile in glob.glob( os.path.join(path, 'myfile.*') ):
    print "current file is: " + infile

если вы хотите перечислить все файлы в папке, просто измените цикл for на

for infile in glob.glob( os.path.join(path) ):
3 голосов
/ 27 июня 2011

Чтобы вывести список всех файлов в папке и ее подпапках и т. Д., Используйте функцию os.walk :

import os
for root, dirs, files in os.walk('/blah/myfolder'):
    for name in files:
        if 'myfile' in name:
            print ("Found %s" % name)

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

import os
for name in os.listdir('/blah/myfolder'):
    if 'myfile' in name:
        print ("Found %s" % name)
0 голосов
/ 27 июня 2011

Также вы можете просмотреть функцию os.walk, если хотите заглянуть в подкаталоги.

http://docs.python.org/library/os.html#os.walk

0 голосов
/ 27 июня 2011

format (под которым я подразумеваю, что вы подразумеваете тип файла) не связано с его расширением (которое является частью его имени).

Если вы работаете в UNIX, вы можете использовать команду find . find myfolder -name myfile должно работать.

Если вы хотите получить полный список, вы можете использовать поиск без каких-либо аргументов, использовать ls с опцией -R или команду tree. Все они в UNIX.

0 голосов
/ 27 июня 2011

Я не знаю логику Python для этого, но я бы сделал следующее:

Перебрать каждый файл в каталоге, получить имена в виде строк и проверить, не начинаются ли они с «myfile»разделив строку на "."Вы можете сравнить то, что вы ищете, с тем, что у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...