Created
December 10, 2020 10:58
-
-
Save csaybar/78706d9f04b01a16f53ba9769b6bb1ea to your computer and use it in GitHub Desktop.
delete_files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from typing import List | |
import datetime | |
import pathlib | |
import re | |
class Sen2CubeFiles: | |
def __init__(self, path: str): | |
self.path = path | |
self.__fake_path = path | |
self._files = self.search_iter(".") | |
def search_iter(self, pattern: str = ".") -> List: | |
dirpath = pathlib.Path(self.__fake_path) | |
assert(dirpath.is_dir()) | |
file_list = [] | |
for x in dirpath.iterdir(): | |
if x.is_file() and re.search(pattern, x.as_posix()): | |
file_list.append(x.absolute().as_posix()) | |
elif x.is_dir(): | |
self.__fake_path = x | |
file_list.extend(self.search_iter(pattern)) | |
return file_list | |
@property | |
def files(self): | |
return self._files | |
@files.setter | |
def files(self, value): | |
self._files = value | |
def select_by_regex(self, regex_exp): | |
regex_cond = re.compile(regex_exp) | |
previous_files = self.files | |
self.files = [file for file in previous_files if re.search(regex_cond, file)] | |
return self | |
def remove_root_files(self): | |
new_list = [] | |
for file in self.files: | |
parts_files = pathlib.Path(file).relative_to(self.path).parts | |
if not len(parts_files) == 1: | |
new_list.append(file) | |
self.files = new_list | |
return self | |
def remove_by_regex(self, regex_exp): | |
regex_cond = re.compile(regex_exp) | |
previous_files = self.files | |
self.files = [file for file in previous_files if not re.search(regex_cond, file)] | |
return self | |
def select_by_time(self, specified_day: str): | |
if specified_day is None: | |
specified_day_datetime = datetime.datetime.now() | |
else: | |
specified_day_datetime = datetime.datetime.strptime(specified_day, '%Y-%m-%d') | |
#TODO | |
def delete(self): | |
for file in self.files: | |
print("Deleting: " + file) | |
pathlib.Path(file).unlink() | |
if __name__ == '__main__': | |
# Define a path | |
path = "/home/csaybar/Downloads/output_test" | |
# Condition #1: Add several files to the removed list | |
select_cond = "\.geojson$|\.csv$|.zip$|\.xml$|\.qgs$|\.qgs.$|\.zip|.tiff$" | |
# Condition #2: Conserve files in the siam|log|zgis folders | |
remove_cond_01 = ".*/siam|log|zgis($|/.*)" | |
# Condition #4: Conserve files with the name id[any_number].tiff | |
remove_cond_02 = "(id\d+\.tiff$)" | |
larisa2 = Sen2CubeFiles(path)\ | |
.select_by_regex(select_cond)\ | |
.remove_by_regex(remove_cond_01)\ | |
.remove_by_regex(remove_cond_02)\ | |
.remove_root_files()\ | |
.delete() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment