Login and get codingYou added some monitoring the other day writing log files to a directory. In this Bite you will zip up the latest ones renaming the files to include the creation date. Ready to learn some
pathlib
,Zipfile
and a bit ofdatetime
goodness?Complete
zip_last_n_files
that takes adirectory
(Path
object), azip_file
output filename (str
) and n (int
) = the amount files to include in the zipfile. You zip up the last N log files to a zipfile in the current working directory. The files need to include their creation date (%Y-%m-%d
, e.g. 2019-10-30).Here is an example how it should work. Given this directory (files sorted ascending by creation timestamp):
$ ls -lrth /tmp/logs/ total 0 -rw-r--r-- 1 bobbelderbos wheel 0B Oct 30 23:16 file4.log -rw-r--r-- 1 bobbelderbos wheel 0B Oct 30 23:16 file3.log -rw-r--r-- 1 bobbelderbos wheel 0B Oct 30 23:16 file2.log -rw-r--r-- 1 bobbelderbos wheel 0B Oct 30 23:16 file5.log -rw-r--r-- 1 bobbelderbos wheel 0B Oct 30 23:17 file7.log -rw-r--r-- 1 bobbelderbos wheel 0B Oct 30 23:17 file6.log -rw-r--r-- 1 bobbelderbos wheel 0B Oct 31 00:10 file1.logYour code should produce a zipfile with the last N (here = 3) files. (Note the renamed file names!)
>>> from pathlib import Path >>> from zipfile import ZipFile >>> from files import zip_last_n_files >>> path = Path('/tmp') / 'logs' >>> zip_last_n_files(path, 'log_files.zip', n=3) >>> zip_out = Path('log_files.zip') >>> ZipFile(zip_out).namelist() ['file1_2019-10-31.log', 'file7_2019-10-30.log', 'file6_2019-10-30.log']The order of the 3 files does not really matter, as long as you get the latest 3 (or whatever number
n
is).We hope you learn some good tricks coding this Bite. Maybe even a script / snippet you can use elsewhere! And remember keep calm and code in Python!
73 out of 77 users completed this Bite.
Will you be the 74th person to crack this Bite?
Resolution time: ~76 min. (avg. submissions of 5-240 min.)
Our community rates this Bite 5.17 on a 1-10 difficulty scale.
» Up for a challenge? 💪