Skip to content

Commit 0673b84

Browse files
authored
Merge pull request mouredev#7176 from Kenysdev/41.py
41 - python
2 parents 26f81a5 + 3b4258d commit 0673b84

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# _____________________________________
2+
# https://github.com/kenysdev
3+
# 2024 - Python
4+
# _____________________________________
5+
# 41 CAMISETA RAR
6+
# ------------------------------------
7+
8+
"""
9+
* EJERCICIO:
10+
* ¿Has visto la camiseta.rar?
11+
* https://x.com/MoureDev/status/1841531938961592740
12+
*
13+
* Crea un programa capaz de comprimir un archivo
14+
* en formato .zip (o el que tú quieras).
15+
* - No subas el archivo o el zip.
16+
"""
17+
18+
import zipfile # https://docs.python.org/es/3.13/library/zipfile.html
19+
import os
20+
21+
def compress_file(source_file, zip_file):
22+
if not os.path.exists(source_file):
23+
raise FileNotFoundError(f"El archivo fuente '{source_file}' no existe.")
24+
25+
if not os.access(source_file, os.R_OK):
26+
raise PermissionError(f"No tienes permiso de lectura para '{source_file}'")
27+
28+
zip_dir = os.path.dirname(zip_file) or '.'
29+
if not os.path.exists(zip_dir):
30+
raise FileNotFoundError(f"El directorio '{zip_dir}' no existe.")
31+
32+
if os.path.exists(zip_file):
33+
raise FileExistsError(f"El archivo zip '{zip_file}' ya existe.")
34+
35+
try:
36+
with zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
37+
zipf.write(source_file, arcname=os.path.basename(source_file))
38+
39+
print(f"Comprimido exitosamente '{source_file}' a '{zip_file}'")
40+
41+
except PermissionError:
42+
raise PermissionError(f"No tienes permiso de escritura para '{zip_file}'")
43+
except Exception as e:
44+
raise RuntimeError(f"Se produjo un error al comprimir el archivo.: {e}")
45+
46+
47+
compress_file('tmp.mp4', 'file.zip')

0 commit comments

Comments
 (0)