Skip to content

Instantly share code, notes, and snippets.

@csaybar
Created December 10, 2020 10:58
Show Gist options
  • Save csaybar/78706d9f04b01a16f53ba9769b6bb1ea to your computer and use it in GitHub Desktop.
Save csaybar/78706d9f04b01a16f53ba9769b6bb1ea to your computer and use it in GitHub Desktop.
delete_files
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