یک اسکریپت پایتون بنویسید که با استفاده از zipfile.ZipFile تمام فایل‌های CSV داخل یک آرشیو ZIP را شناسایی کند، هر کدام را بخواند و یک فایل خلاصه (summary.csv) شامل نام فایل، تعداد سطرها، تعداد ستون‌ها و اندازه فایل (بایت) تولید کند.

16.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 00:12

0.0

برای حل این مسئله از ماژول zipfile.ZipFile استفاده کنید: آرشیو را با یک context manager باز کرده، از .infolist() یا .namelist() برای یافتن فایل‌های با پسوند .csv استفاده کنید و با z.open() هر فایل را بدون استخراج کامل به دیسک باز کنید. برای خواندن و شمارش سطرها/ستون‌ها می‌توانید از pandas.read_csv (راحت‌تر برای داده‌های جدولی) یا ماژول csv همراه با io.TextIOWrapper استفاده کنید و اندازه فایل را از info.file_size بگیرید؛ در پایان با csv.writer یا pandas DataFrame یک summary.csv بسازید. نکته‌ها: از اطلاعات info.is_dir() برای رد کردن دایرکتوری‌ها استفاده کنید، روی مسئله‌ی encoding و فایل‌های بزرگ فکر کنید (خواندن به‌صورت streaming یا استفاده از iterator).

توسط پژوهشگر در 198 روز قبل ساعت 00:12
دسته بندی ها: Python Python for beginner
arman در 198 روز قبل ساعت 00:13

برای هر ورودی زیپ از z.infolist() استفاده کنید و با info.is_dir() دایرکتوری‌ها را رد و با info.filename.lower().endswith('.csv') فایل‌های CSV را شناسایی کنید. برای شمارش سطرها و ستون‌ها بدون استخراج کامل از z.open() همراه با io.TextIOWrapper و csv.reader استفاده کنید (سطر اول را برای تعداد ستون‌ها بخوانید و سپس با حلقه‌ای شمارش کنید) یا اگر راحتی بیشتری می‌خواهید، pandas.read_csv با iterator/chunksize برای فایل‌های بزرگ بکار ببرید. حجم فایل را از info.file_size بخوانید و همیشه encoding را مشخص کنید و برای فایل‌های بزرگ از خواندن تکه‌ای (chunksize) یا streaming استفاده کنید تا حافظه مصرف نشود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری