Я использовал его для создания объектов на основе памяти, содержащей сообщения, полученные из сети.
В вашем вопросе упоминается JSON. Итак, я обратился к этому. Дайте мне знать, если это поможет.
import json
import os
import glob
import pprint
keywordList = []
path = '/Users/Me/Api/downloaded'
for filename in glob.glob(os.path.join(path, '*.json')): #only process .JSON files in folder.
with open(filename, encoding='utf-8', mode='r') as currentFile:
data=currentFile.read().replace('\n', '')
keyword = json.loads(data)["keytolookup"]
if keyword not in keywordList:
keywordList.append(keyword)
pprint(keywordList)
РЕДАКТИРОВАТЬ примечание : обновленное изменение ответа для цикла по сравнению с первоначальным ответом:
for filename in os.listdir(path)
OP упомянутой версии глоба работает лучше. Это тоже было в качестве альтернативы.
Вы добавляете имена файлов в массив fileList, но во втором цикле for вы перебираете имена файлов вместо fileList. импорт ОС
os.chdir('/Users/Me/Api/downloaded')
fileList = []
keywordList = []
for filenames in os.walk('/Users/Me/Api/downloaded'):
fileList.append(filenames)
for file in fileList:
with open(file, encoding='utf-8', mode='r') as currentFile:
keywordList.append(currentFile['keyword'])
Вы используете currentFile, как будто это объект json, но это только дескриптор файла. Я добавил недостающий шаг - анализ файла в объект json.
import os
import json
os.chdir('/Users/Me/Api/downloaded')
fileList = []
keywordList = []
for filenames in os.walk('/Users/Me/Api/downloaded'):
fileList.append(filenames)
for file in filenames:
with open(file, encoding='utf-8', mode='r') as currentFile:
data = json.load(currentFile) # Parses the file to json object
keywordList.append(data['keyword'])
print(keywordList)
Разве строка for file in filenames:
не должна быть for file in fileList:
?
Также я думаю, что это правильный способ использования os.walk()
import os
fileList = []
keywordList = []
for root, dirs, files in os.walk('/Users/Me/Api/downloaded', topdown=False):
for name in files:
fileList.append(os.path.join(root, name))
for file in fileList:
with open(file, encoding='utf-8', mode='r') as currentFile:
keywordList.append(currentFile['keyword'])
print(keywordList)