...
This commit is contained in:
0
lib/core/pathlib/__init__.py
Normal file
0
lib/core/pathlib/__init__.py
Normal file
BIN
lib/core/pathlib/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
lib/core/pathlib/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
lib/core/pathlib/__pycache__/pathlib.cpython-313.pyc
Normal file
BIN
lib/core/pathlib/__pycache__/pathlib.cpython-313.pyc
Normal file
Binary file not shown.
80
lib/core/pathlib/pathlib.py
Normal file
80
lib/core/pathlib/pathlib.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import os
|
||||
|
||||
class Path:
|
||||
def __init__(self, path: str):
|
||||
self.path = os.path.expanduser(path)
|
||||
|
||||
def exists(self) -> bool:
|
||||
return os.path.exists(self.path)
|
||||
|
||||
def is_file(self) -> bool:
|
||||
return os.path.isfile(self.path)
|
||||
|
||||
def is_dir(self) -> bool:
|
||||
return os.path.isdir(self.path)
|
||||
|
||||
def read(self) -> str:
|
||||
with open(self.path, 'r') as f:
|
||||
return f.read()
|
||||
|
||||
def write(self, content: str):
|
||||
os.makedirs(os.path.dirname(self.path), exist_ok=True)
|
||||
with open(self.path, 'w') as f:
|
||||
f.write(content)
|
||||
|
||||
def delete(self):
|
||||
if self.is_file():
|
||||
os.remove(self.path)
|
||||
elif self.is_dir():
|
||||
os.rmdir(self.path)
|
||||
|
||||
def list(self, recursive: bool = False, regex: list = None) -> list[str]:
|
||||
files = []
|
||||
if self.is_dir():
|
||||
if recursive:
|
||||
for root, _, filenames in os.walk(self.path):
|
||||
for filename in filenames:
|
||||
full_path = os.path.join(root, filename)
|
||||
relative_path = os.path.relpath(full_path, self.path)
|
||||
if regex:
|
||||
import re
|
||||
if any(re.match(r, relative_path) for r in regex):
|
||||
files.append(relative_path)
|
||||
else:
|
||||
files.append(relative_path)
|
||||
else:
|
||||
for entry in os.listdir(self.path):
|
||||
full_path = os.path.join(self.path, entry)
|
||||
if os.path.isfile(full_path):
|
||||
if regex:
|
||||
import re
|
||||
if any(re.match(r, entry) for r in regex):
|
||||
files.append(entry)
|
||||
else:
|
||||
files.append(entry)
|
||||
return files
|
||||
|
||||
def get(path: str) -> Path:
|
||||
return Path(path)
|
||||
|
||||
def get_dir(path: str, create: bool = False) -> Path:
|
||||
p = Path(path)
|
||||
if create and not p.exists():
|
||||
os.makedirs(p.path, exist_ok=True)
|
||||
return p
|
||||
|
||||
def get_file(path: str, create: bool = False) -> Path:
|
||||
p = Path(path)
|
||||
if create and not p.exists():
|
||||
os.makedirs(os.path.dirname(p.path), exist_ok=True)
|
||||
with open(p.path, 'w') as f:
|
||||
pass # Create empty file
|
||||
return p
|
||||
|
||||
def rmdir_all(path: str):
|
||||
if os.path.exists(path):
|
||||
import shutil
|
||||
shutil.rmtree(path)
|
||||
|
||||
def ls(path: str) -> list[str]:
|
||||
return os.listdir(path)
|
Reference in New Issue
Block a user