Проблема чтения текстовых файлов без расширений в Python - PullRequest
3 голосов
/ 07 февраля 2011

Я написал фрагмент кода, который должен читать тексты в нескольких файлах, которые находятся в каталоге. Эти файлы в основном являются текстовыми файлами, но они не имеют никаких расширений. Но мой код не может их прочитать:

corpus_path = 'Reviews/'

for infile in glob.glob(os.path.join(corpus_path,'*.*')):
    review_file = open(infile,'r').read()
    print review_file

Чтобы проверить, работает ли этот код, я поставил фиктивный текстовый файл dummy.txt. который работал, потому что он имеет расширение. Но я не знаю, что делать, чтобы файлы без расширений можно было читать. Кто-нибудь может мне помочь? Спасибо

Ответы [ 4 ]

6 голосов
/ 07 февраля 2011

Шаблоны глобусов не работают так же, как шаблоны на платформе Windows.Просто используйте * вместо *.*.то есть os.path.join(corpus_path,'*').Обратите внимание, что * будет соответствовать каждому файлу в каталоге - если это не то, что вам нужно, вы можете соответствующим образом пересмотреть шаблон.

См. Документацию glob-модуля для более подробной информации.

5 голосов
/ 07 февраля 2011

Просто используйте * вместо *.*.

Последний требует наличия расширения (точнее, в имени файла должна быть точка), первый - нет.

3 голосов
/ 07 февраля 2011

Вы можете искать * вместо *.*, но это будет соответствовать каждому файлу в вашем каталоге.

По сути, это означает, что вам придется обрабатывать случаи, когдафайл, который вы открываете, не является текстовым файлом.

0 голосов
/ 07 февраля 2011

кажется, что вам нужно

from os import listdir

from filename in ( fn for fn in listdir(corpus_path) if '.' not in fn):
    # do something

вы могли бы написать

from os import listdir

for fn in listdir(corpus_path):
    if '.' not in fn:
        # do something

, но первый с генератором оставляет один уровень отступа

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