Современный Python (3.6+) с использованием модуля pathlib
для краткой ООП-подобной обработки путей и pathlib.Path.rglob()
для рекурсивного глобирования. Насколько я могу судить, это эквивалентно ответу Джорджа В. Рейли: молнии с сжатием, самый верхний элемент - это каталог, содержит пустые директории, использует относительные пути.
from pathlib import Path
from zipfile import ZIP_DEFLATED, ZipFile
from os import PathLike
from typing import Union
def zip_dir(zip_name: str, source_dir: Union[str, PathLike]):
src_path = Path(source_dir).expanduser().resolve(strict=True)
with ZipFile(zip_name, 'w', ZIP_DEFLATED) as zf:
for file in src_path.rglob('*'):
zf.write(file, file.relative_to(src_path.parent))
Примечание: как необязательные подсказки типа указывают, что zip_name
не может быть объектом Path ( будет зафиксировано в 3.6.2 + ).
Ответ делает это без рекурсии. Спасибо Г. Андерсону.
import numpy as np
import random
import pivot as p
condition = True
while(condition):
matrices = np.random.rand(4, 4)
print(matrices)
u, s, v = np.linalg.svd(matrices, full_matrices=False)
Rank = 0
for i in range(len(s)):
if s[i] < 0.01:
s[i] = 0
print(s)
condition = False