
سناریو از این قرار هست که چندین فایل حجیم json بهمون میدن و قراره تک تک این فایل ها رو با ز کنیم، سطر به سطر جدا کنیم (هر سطر یه ابجکت json) و بیایم یه فیلد خاص رو بررسی کنیم که کلمه مورد نظر ما داخلش هست یا نه
برای اینکار اول از همه باید بیام فایل های json رو لیست کنم:
import os PATH = "/home/my_jsons" with os.scandir(PATH) as entries: for entry in entries: pass
این روش مدرنی هست که از پایتون ۳.۵ معرفی شده (PEP 471)
برای باز کردن هر فایل و خوندن خط به خط اونها از این روش استفاده کردم:
with open(entry, 'r') as read_file: for index, line in enumerate(read_file): data_dict = json.loads(line) fild_1 = data_dict["fild_1"] if KEY_WORD in link: pass
حالا اینجا یه تابع readrows داریم که اگه استفاده میکردم میخواست تمام سطر هارو همون لحظه به لیست تبدیل کنه و باعث انفجار از ناحیه رم می شدیم!
اما اگه بیایم سطر به سطر بررسی رو جلو ببریم باعث میشه این مشکل کمی هندل بشه
مرحله آخر ذخیره نتایج هست:
with open('res.csv', 'w') as result_file: writer = csv.writer(result_file) writer.writerow(["counter", "fild_1", "entry.name", "index"]) writer.writerow([counter, fild_1, entry.name, index])
نتیجه نهایی روی گیتهاب:
اگه موردی هست که براتون سوال ایجاد کرده خوشحال میشم برام تو نظرات این پست بنویسید ?
تامام./