#python-3.x #glob
#python-3.x #глоб
Вопрос:
Я написал цикл for, который обходит дерево каталогов и успешно возвращает имена всех файлов. Вложенные папки включают файлы .pdf, поэтому я пытаюсь извлечь данные только из файлов .xls. Использование glob(‘*.xls’) по какой-то причине не работает.
Это не расширения .xlsx, а .xls, так что проблема не в этом. Я запустил функции печати, чтобы протестировать обход каталога (это работает), но тогда я, похоже, не могу захватить файлы с расширением .xls.
import os
from glob import glob
for folderName, subfolders, filenames in os.walk('C:\Users\userName\someFiles'):
print('The current folder is ' folderName)
for subfolder in subfolders:
print('SUBFOLDER OF ' folderName ': ' subfolder)
for filename in filenames:
dataPrint = glob('*.xls')
print('File Name is: ' filename ' Glob name is: ' str(dataPrint))
Это работает до такой степени:
The current folder is C:Users\userName\someFilessubFolder
File Name is: Sample Data March 2019.pdf Glob name is: []
File Name is: File 1 March 2019.pdf Glob name is: []
File Name is: File 1 March 2019.xls Glob name is: []
Вы можете видеть, как glob отображается пустым. Я не могу понять это, потому что glob никогда не подводил меня раньше! Спасибо, что взглянули.
Ответ №1:
это может сработать для вас
import os
from glob import glob
path = 'C:\Users\username\Desktop\glob\target'
for folderName, subfolders, filenames in os.walk(path):
for subfolder in subfolders:
print('SUBFOLDER OF ' folderName ': ' subfolder)
for filename in filenames:
dataPrint = glob(path '\*.xlsx')
print('File Name is: ' filename ' Glob name is: ' str(dataPrint))
Комментарии:
1. Однако все еще отображается пустой, я не уверен, что понимаю вашу переменную path. Почему у вас в нем есть glob?
2. Привет, переменная path содержала glob , потому что я использовал это в имени папки, чтобы протестировать его. Вы можете называть это как угодно; но оно должно указывать на папку, содержащую файлы, которые вы хотите перечислить. Причина, по которой он может оказаться пустым для вас, заключается в том, что я изменил расширение на
.xlsx
вместо.xls
3. хорошо, это то, что я подумал, поэтому я проигнорировал это. Я также поймал .xlsx. Все еще появляется пустой. Это очень странно.
4. Может ли это быть связано с вашими вложенными папками? * .xls будет искать любое имя файла с расширением XLS, но я не думаю, что оно будет искать во вложенных папках path. Если у вас есть только один уровень папок ниже переменной path, вы могли бы просто использовать другую звездочку, подобную этой:
dataPrint = glob(path '\*\*.xls')
5. Это фиксирует весь путь как имя глобуса. Это очень озадачивает.