یک اسکریپت پایتون بنویسید که با استفاده از 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).
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای هر ورودی زیپ از 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 استفاده کنید تا حافظه مصرف نشود.
گزارش