Начинающий Python: моя проверка isfile () перестала работать - PullRequest
0 голосов
/ 25 августа 2018
  1. Этот раздел работал, и теперь он НЕ работает. Возможно, рабочая версия не сохранила, но это похоже на конкретный сбой в коде. Я не вижу, где может быть проблема. print #debug работает вне проверки if isfile, но не внутри. Выходные данные консоли не являются целым каталогом, но рабочий цикл выводит полный список файлов.

  2. Кроме того, возможно ли поместить отпечаток («строка» + список) в одну строку?

  3. И как только у меня работает isfile (), мне нужно проверить, что файл содержит тег <HTML>. Нужно ли мне открывать / читать файл, а затем проверять текст? Или есть какой-то другой способ сканирования файла?

Спасибо!

def getChapterFiles(book):
    filepaths = getFilepaths(book)
    #print(filepaths) # debug #
    files = []
    chapters = []
    for book, filepaths, files in os.walk(book):
        for file in files:
            #print(os.path.join(book, file)) # debug #
            if os.path.isfile(file):
            ##and file.endswith(".html")
                chapters.append(os.path.join(book, file))           
                print(os.path.join(book, file)) # debug # 
    print("Chapters: ")
    print(chapters)        
    return chapters

КОНСОЛЬ снаружи isfile проверка:

D:\story_processing\test dirs\RR\Journey Into Darkness\Journey into Darkness -Chapter 6.html
Inside for loop, outside isfile: 
D:\story_processing\test dirs\RR\Journey Into Darkness\Journey Into Darkness -Chapter 7.html
Inside for loop, outside isfile: 
D:\story_processing\test dirs\RR\Journey Into Darkness\Journey into Darkness -Chapter 8.html
Chapters: 
[]

КОНСОЛЬ внутри isfile проверка:

D:\story_processing\test dirs\RR\Journey Into Darkness\Journey Into Darkness -Chapter 4.html
Inside for loop, outside isfile: 
D:\story_processing\test dirs\RR\Journey Into Darkness\Journey into Darkness -Chapter 5.html
Inside for loop, outside isfile: 
D:\story_processing\test dirs\RR\Journey Into Darkness\Journey into Darkness -Chapter 6.html
Inside for loop, outside isfile: 
D:\story_processing\test dirs\RR\Journey Into Darkness\Journey Into Darkness -Chapter 7.html
Inside for loop, outside isfile: 
D:\story_processing\test dirs\RR\Journey Into Darkness\Journey into Darkness -Chapter 8.html
Chapters: 
[]

Изображение соответствующего каталога:

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

1) я бы предположил, что файлы не в вашем рабочем каталоге, что означает, что вы должны проверить путь к файлу, а не имя файла:

if os.path.isfile(os.path.join(book, file)):
    # do something

2) просто вызовите str(chapters) явно (print() подразумевает это, но конкатенация строк не делает):

print("Chapters: " + str(chapters))

3), так как вы работаете с html, я бы рекомендовал посмотреть в сторону BeautifulSoup , но трудно давать рекомендации, не зная, что вы проверяете.как сказал @ Аран-Фей, один вопрос за раз.

0 голосов
/ 25 августа 2018

Пожалуйста, измените имя "book" на другой пример имени переменной "bk":

for bk, filepaths, files in os.walk(book):
        for file in files:
            #print(os.path.join(bk, file)) # debug #
            if os.path.isfile(file):
            ##and file.endswith(".html")
                chapters.append(os.path.join(bk, file))           
                print(os.path.join(bk, file)) # debug # 

2)

print("string %s" % ["yours list"])

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