Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| """ | |
| ุฃูู ูุฑ ARแธ โ Operating Kernel (Layer 3) | |
| Root: ุฃ-ุฑ-ุถ | |
| Q2:22 ุงูููุฐูู ุฌูุนููู ููููู ู ุงููุฃูุฑูุถู ููุฑูุงุดูุง โ who made for you the ground a bed | |
| The ground layer: file system, process execution, environment, time. | |
| File System (ู ููููููุงุช): | |
| ุงูููุฑูุฃู_ู ููููู โ read file root: ู-ุฑ-ุฃ + ู -ู-ู | |
| ุงูููุชูุจู_ู ููููู โ write file root: ู-ุช-ุจ + ู -ู-ู | |
| ุฃูุถููู_ู ููููู โ append to file root: ุถ-ู-ู | |
| ู ููููููุงุช โ list dir root: ู -ู-ู | |
| ู ูููุฌููุฏ โ path exists root: ู-ุฌ-ุฏ | |
| ุงูู ูุณูุญู โ delete file root: ู -ุณ-ุญ | |
| ุงููููููู โ move/rename root: ู-ู-ู | |
| ุงูููุณูุฎู_ู ููููู โ copy file root: ู-ุณ-ุฎ | |
| ู ูุณูุงุฑ โ path operations root: ุณ-ู-ุฑ | |
| Process (ุนูู ููููููุงุช): | |
| ูููููุฐู โ execute command root: ู-ู-ุฐ | |
| ุจููุฆูุฉ โ environment var root: ุจ-ู-ุฃ | |
| Time (ููููุช): | |
| ููููุช โ current time root: ู-ู-ุช | |
| ุงูููุชูุธูุฑู โ sleep/wait root: ู-ุธ-ุฑ | |
| ููุณู โ measure duration root: ู-ู-ุณ | |
| System (ููุธูุงู ): | |
| ู ูุณูุงุฑ_ุญูุงููู โ current dir | |
| ู ูุณูุงุฑ_ุจูููุช โ home dir | |
| ู ูุณูุงุฑ_ู ูุทูููู โ absolute path | |
| """ | |
| import sys | |
| import os | |
| import shutil | |
| import subprocess | |
| import time as _time | |
| import glob as _glob | |
| import json | |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # ARABIC ERROR | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| class ุฎูุทูุฃ_ุฃูุฑูุถ(Exception): | |
| """ARแธ kernel error""" | |
| pass | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # FILE SYSTEM โ ู ููููููุงุช | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def ุงูููุฑูุฃู_ู ููููู(path, ุชุฑู ูุฒ="utf-8"): | |
| """ | |
| ุงูููุฑูุฃู ู ููููู โ Read file contents (root: ู-ุฑ-ุฃ + ู -ู-ู) | |
| Q96:1 ุงููุฑูุฃู โ READ | |
| Returns string contents of the file. | |
| Usage: | |
| ูููู ููุตู โ ุงูููุฑูุฃู_ู ููููู("data.txt") | |
| """ | |
| try: | |
| with open(path, 'r', encoding=ุชุฑู ูุฒ) as f: | |
| return f.read() | |
| except FileNotFoundError: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ู ููููู ุบูููุฑ ู ูููุฌููุฏ: {path}') | |
| except PermissionError: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ููุง ุตูููุงุญููููุฉ ูููููุฑูุงุกูุฉ: {path}') | |
| except UnicodeDecodeError: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฎูุทูุฃ ุชูุฑูู ููุฒ: {path}') | |
| def ุงูููุชูุจู_ู ููููู(path, content, ุชุฑู ูุฒ="utf-8"): | |
| """ | |
| ุงูููุชูุจู ู ููููู โ Write to file (root: ู-ุช-ุจ + ู -ู-ู) | |
| Q96:4 ุนููููู ู ุจูุงููููููู ู โ taught by the pen | |
| Overwrites file. Creates parent dirs if needed. | |
| Usage: | |
| ุงูููุชูุจู_ู ููููู("output.txt", "ุจูุณูู ู ุงูููููู") | |
| """ | |
| try: | |
| parent = os.path.dirname(path) | |
| if parent and not os.path.exists(parent): | |
| os.makedirs(parent, exist_ok=True) | |
| with open(path, 'w', encoding=ุชุฑู ูุฒ) as f: | |
| f.write(str(content)) | |
| return True | |
| except (PermissionError, OSError) as e: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ููุง ุตูููุงุญููููุฉ ูููููุชูุงุจูุฉ: {path} ({e})') | |
| def ุฃูุถููู_ู ููููู(path, content, ุชุฑู ูุฒ="utf-8"): | |
| """ | |
| ุฃูุถููู ู ููููู โ Append to file (root: ุถ-ู-ู, add/host) | |
| Usage: | |
| ุฃูุถููู_ู ููููู("log.txt", "ุณูุทูุฑ ุฌูุฏููุฏ\\n") | |
| """ | |
| try: | |
| with open(path, 'a', encoding=ุชุฑู ูุฒ) as f: | |
| f.write(str(content)) | |
| return True | |
| except PermissionError: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ููุง ุตูููุงุญููููุฉ ูููููุชูุงุจูุฉ: {path}') | |
| def ุณูุทููุฑ_ู ููููู(path, ุชุฑู ูุฒ="utf-8"): | |
| """ | |
| ุณูุทููุฑ ู ููููู โ Read file as lines (root: ุณ-ุท-ุฑ) | |
| Returns list of lines (stripped). | |
| Usage: | |
| ูููู ุณูุทููุฑ โ ุณูุทููุฑ_ู ููููู("data.txt") | |
| """ | |
| text = ุงูููุฑูุฃู_ู ููููู(path, ุชุฑู ูุฒ) | |
| return text.splitlines() | |
| def ู ููููููุงุช(path=".", ููู ูุท="*"): | |
| """ | |
| ู ููููููุงุช โ List directory contents (root: ู -ู-ู) | |
| Args: | |
| path: Directory to list | |
| ููู ูุท: Glob pattern (default "*") | |
| Returns list of filenames. | |
| Usage: | |
| ูููู ู โ ู ููููููุงุช(".") | |
| ูููู ุจ โ ู ููููููุงุช(".", ููู ูุท="*.ุฃู ุฑ") | |
| """ | |
| full = os.path.join(path, ููู ูุท) | |
| return sorted(_glob.glob(full)) | |
| def ู ูููุฌููุฏ(path): | |
| """ | |
| ู ูููุฌููุฏ โ Check if path exists (root: ู-ุฌ-ุฏ, to find/exist) | |
| Usage: | |
| ุฅููู ู ูููุฌููุฏ("data.txt"): | |
| ุงูููุชูุจู("ู ูููุฌููุฏ") | |
| """ | |
| return os.path.exists(path) | |
| def ู ููููู_ุฃูู ู_ู ูุฌููููุฏ(path): | |
| """ | |
| ู ููููู ุฃูู ู ู ูุฌููููุฏ โ Is it a file or directory? | |
| Returns "ู ููููู", "ู ูุฌููููุฏ", or "ุบูููุฑ_ู ูููุฌููุฏ" | |
| """ | |
| if os.path.isfile(path): | |
| return "ู ููููู" | |
| elif os.path.isdir(path): | |
| return "ู ูุฌููููุฏ" | |
| return "ุบูููุฑ_ู ูููุฌููุฏ" | |
| def ุญูุฌูู (path): | |
| """ | |
| ุญูุฌูู โ File size in bytes (root: ุญ-ุฌ-ู ) | |
| Usage: | |
| ูููู ุญ โ ุญูุฌูู ("data.txt") | |
| """ | |
| if not os.path.exists(path): | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ู ููููู ุบูููุฑ ู ูููุฌููุฏ: {path}') | |
| return os.path.getsize(path) | |
| def ุงูู ูุณูุญู(path): | |
| """ | |
| ุงูู ูุณูุญู โ Delete file or empty directory (root: ู -ุณ-ุญ, to wipe) | |
| Usage: | |
| ุงูู ูุณูุญู("temp.txt") | |
| """ | |
| if not os.path.exists(path): | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ู ููููู ุบูููุฑ ู ูููุฌููุฏ: {path}') | |
| try: | |
| if os.path.isfile(path): | |
| os.remove(path) | |
| elif os.path.isdir(path): | |
| os.rmdir(path) | |
| return True | |
| except PermissionError: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ููุง ุตูููุงุญููููุฉ ูููุญูุฐูู: {path}') | |
| except OSError as e: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฎูุทูุฃ ุญูุฐูู: {e}') | |
| def ุงููููููู(ู ูุตูุฏูุฑ, ููุฏูู): | |
| """ | |
| ุงููููููู โ Move/rename file (root: ู-ู-ู, to transfer) | |
| Usage: | |
| ุงููููููู("old.txt", "new.txt") | |
| """ | |
| if not os.path.exists(ู ูุตูุฏูุฑ): | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ู ูุตูุฏูุฑ ุบูููุฑ ู ูููุฌููุฏ: {ู ูุตูุฏูุฑ}') | |
| try: | |
| shutil.move(ู ูุตูุฏูุฑ, ููุฏูู) | |
| return True | |
| except Exception as e: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฎูุทูุฃ ููููู: {e}') | |
| def ุงูููุณูุฎู_ู ููููู(ู ูุตูุฏูุฑ, ููุฏูู): | |
| """ | |
| ุงูููุณูุฎู ู ููููู โ Copy file (root: ู-ุณ-ุฎ) | |
| Q2:106 ู ูุง ูููุณูุฎู ู ููู ุขููุฉู | |
| Usage: | |
| ุงูููุณูุฎู_ู ููููู("original.txt", "backup.txt") | |
| """ | |
| if not os.path.exists(ู ูุตูุฏูุฑ): | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ู ูุตูุฏูุฑ ุบูููุฑ ู ูููุฌููุฏ: {ู ูุตูุฏูุฑ}') | |
| try: | |
| shutil.copy2(ู ูุตูุฏูุฑ, ููุฏูู) | |
| return True | |
| except Exception as e: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฎูุทูุฃ ููุณูุฎ: {e}') | |
| def ุฃูููุดูุฆู_ู ูุฌููููุฏ(path): | |
| """ | |
| ุฃูููุดูุฆู ู ูุฌููููุฏ โ Create directory (root: ู-ุด-ุฃ) | |
| Creates parent directories as needed. | |
| Usage: | |
| ุฃูููุดูุฆู_ู ูุฌููููุฏ("output/reports") | |
| """ | |
| os.makedirs(path, exist_ok=True) | |
| return True | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # PATH OPERATIONS โ ู ูุณูุงุฑ | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def ู ูุณูุงุฑ_ุญูุงููู(): | |
| """ู ูุณูุงุฑ ุญูุงููู โ Current working directory (root: ุณ-ู-ุฑ)""" | |
| return os.getcwd() | |
| def ู ูุณูุงุฑ_ุจูููุช(): | |
| """ู ูุณูุงุฑ ุจูููุช โ Home directory""" | |
| return os.path.expanduser('~') | |
| def ู ูุณูุงุฑ_ู ูุทูููู(path): | |
| """ู ูุณูุงุฑ ู ูุทูููู โ Absolute path""" | |
| return os.path.abspath(path) | |
| def ุงูุณูู _ู ููููู(path): | |
| """ุงูุณูู ู ููููู โ Filename from path""" | |
| return os.path.basename(path) | |
| def ู ูุฌููููุฏ_ู ููููู(path): | |
| """ู ูุฌููููุฏ ู ููููู โ Directory from path""" | |
| return os.path.dirname(path) | |
| def ุงูู ูุชูุฏูุงุฏ(path): | |
| """ุงูู ูุชูุฏูุงุฏ โ File extension""" | |
| return os.path.splitext(path)[1] | |
| def ุตููู_ู ูุณูุงุฑ(*parts): | |
| """ุตููู ู ูุณูุงุฑ โ Join path components""" | |
| return os.path.join(*parts) | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # PROCESS EXECUTION โ ุนูู ููููููุงุช | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def ูููููุฐู(ุฃูู ูุฑ, ู ูููููุฉ=30): | |
| """ | |
| ูููููุฐู โ Execute a shell command (root: ู-ู-ุฐ, penetrate/execute) | |
| Args: | |
| ุฃูู ูุฑ: Command string to execute | |
| ู ูููููุฉ: Timeout in seconds (default 30) | |
| Returns dict with: | |
| ุฎูุฑููุฌ (stdout), ุฎูุทูุฃ (stderr), ุฑูู ูุฒ (return code) | |
| Usage: | |
| ูููู ู โ ูููููุฐู("ls -la") | |
| ุงูููุชูุจู(ุฎูุฐู(ู, "ุฎูุฑููุฌ")) | |
| """ | |
| try: | |
| result = subprocess.run( | |
| ุฃูู ูุฑ, shell=True, capture_output=True, text=True, | |
| timeout=ู ูููููุฉ | |
| ) | |
| return { | |
| 'ุฎูุฑููุฌ': result.stdout, | |
| 'ุฎูุทูุฃ': result.stderr, | |
| 'ุฑูู ูุฒ': result.returncode, | |
| } | |
| except subprocess.TimeoutExpired: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุงูููุชูููุงุก ุงูู ูููููุฉ ({ู ูููููุฉ} ุซูุงููููุฉ): {ุฃูู ูุฑ}') | |
| except Exception as e: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฎูุทูุฃ ุชููููููุฐ: {e}') | |
| def ูููููุฐู_ุฃูู ูุฑ(ุฃูู ูุฑ, ู ูููููุฉ=30): | |
| """ | |
| ูููููุฐู ุฃูู ูุฑ โ Execute and return just stdout (convenience). | |
| Usage: | |
| ูููู ููุตู โ ูููููุฐู_ุฃูู ูุฑ("date") | |
| """ | |
| result = ูููููุฐู(ุฃูู ูุฑ, ู ูููููุฉ) | |
| if result['ุฑูู ูุฒ'] != 0: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฃูู ูุฑ ููุดูู (ุฑูู ูุฒ {result["ุฑูู ูุฒ"]}): {result["ุฎูุทูุฃ"].strip()}') | |
| return result['ุฎูุฑููุฌ'].strip() | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # ENVIRONMENT โ ุจููุฆูุฉ | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def ุจููุฆูุฉ(ุงูุณูู , ูููู ูุฉ_ุงูููุชูุฑูุงุถููููุฉ=None): | |
| """ | |
| ุจููุฆูุฉ โ Get environment variable (root: ุจ-ู-ุฃ) | |
| Usage: | |
| ูููู ู ูุณูุงุฑ โ ุจููุฆูุฉ("PATH") | |
| ูููู ู ูุณูุชูุฎูุฏูู โ ุจููุฆูุฉ("USER", "ุบูููุฑ_ู ูุนูุฑููู") | |
| """ | |
| return os.environ.get(ุงูุณูู , ูููู ูุฉ_ุงูููุชูุฑูุงุถููููุฉ) | |
| def ุงูุฌูุนููู_ุจููุฆูุฉ(ุงูุณูู , ูููู ูุฉ): | |
| """ | |
| ุงูุฌูุนููู ุจููุฆูุฉ โ Set environment variable | |
| Usage: | |
| ุงูุฌูุนููู_ุจููุฆูุฉ("MY_VAR", "value") | |
| """ | |
| os.environ[ุงูุณูู ] = str(ูููู ูุฉ) | |
| return True | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # TIME โ ููููุช | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def ููููุช(): | |
| """ | |
| ููููุช โ Current timestamp (root: ู-ู-ุช) | |
| Returns seconds since epoch as float. | |
| Usage: | |
| ูููู ุงูุขู โ ููููุช() | |
| """ | |
| return _time.time() | |
| def ููููุช_ููุตู(ุชูููุณููู="%Y-%m-%d %H:%M:%S"): | |
| """ | |
| ููููุช ููุตู โ Current time as formatted string | |
| Usage: | |
| ูููู ุช โ ููููุช_ููุตู() | |
| ุงูููุชูุจู(ุช) | |
| """ | |
| return _time.strftime(ุชูููุณููู) | |
| def ุงูููุชูุธูุฑู(ุซูููุงูู): | |
| """ | |
| ุงูููุชูุธูุฑู โ Sleep/wait (root: ู-ุธ-ุฑ, to watch/wait) | |
| Usage: | |
| ุงูููุชูุธูุฑู(ูข) | |
| """ | |
| _time.sleep(ุซูููุงูู) | |
| def ููุณู(ุฏูุงูููุฉ): | |
| """ | |
| ููุณู โ Measure execution time (root: ู-ู-ุณ, to measure) | |
| Returns (result, elapsed_seconds). | |
| Usage: | |
| ูููู ูุ ุฒ โ ููุณู(ู ูุถูุฑููุจุ ูกู ) | |
| """ | |
| start = _time.time() | |
| result = ุฏูุงูููุฉ() | |
| elapsed = _time.time() - start | |
| return result, elapsed | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # JSON โ ุชูููุณููู | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def ุงูููุฑูุฃู_ุฌุณู(path): | |
| """ุงูููุฑูุฃู JSON file, return dict/list.""" | |
| text = ุงูููุฑูุฃู_ู ููููู(path) | |
| try: | |
| return json.loads(text) | |
| except json.JSONDecodeError as e: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฎูุทูุฃ ุชูููุณููู JSON: {e}') | |
| def ุงูููุชูุจู_ุฌุณู(path, data): | |
| """ุงูููุชูุจู data as JSON file.""" | |
| text = json.dumps(data, ensure_ascii=False, indent=2) | |
| ุงูููุชูุจู_ู ููููู(path, text) | |
| return True | |
| def ู ููู_ุฌุณู(text): | |
| """Parse JSON string to dict/list.""" | |
| try: | |
| return json.loads(text) | |
| except json.JSONDecodeError as e: | |
| raise ุฎูุทูุฃ_ุฃูุฑูุถ(f'ุฎูุทูุฃ ุชูููุณููู JSON: {e}') | |
| def ุฅูููู_ุฌุณู(data): | |
| """Convert dict/list to JSON string.""" | |
| return json.dumps(data, ensure_ascii=False, indent=2) | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| # SYSTEM INFO โ ููุธูุงู | |
| # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| def ููุธูุงู (): | |
| """ | |
| ููุธูุงู โ System info dict | |
| Returns: {"ู ูููุตููุฉ": platform, "ู ูุณูุชูุฎูุฏูู ": user, "ู ูุณูุงุฑ": cwd} | |
| """ | |
| return { | |
| 'ู ูููุตููุฉ': sys.platform, | |
| 'ู ูุณูุชูุฎูุฏูู ': os.environ.get('USER', os.environ.get('USERNAME', '')), | |
| 'ู ูุณูุงุฑ': os.getcwd(), | |
| 'ุจูููุซููู': sys.version.split()[0], | |
| } | |
| if __name__ == '__main__': | |
| print('ุจูุณูู ู ุงูููููู ุงูุฑููุญูู ููฐูู ุงูุฑููุญููู ู') | |
| print(f'ARแธ Kernel โ ุฃ-ุฑ-ุถ') | |
| print() | |
| info = ููุธูุงู () | |
| for k, v in info.items(): | |
| print(f' {k}: {v}') | |
| print() | |
| print(f'ููููุช: {ููููุช_ููุตู()}') | |
| print(f'ู ูุณูุงุฑ: {ู ูุณูุงุฑ_ุญูุงููู()}') | |
| print(f'ุจูููุช: {ู ูุณูุงุฑ_ุจูููุช()}') | |
| print() | |
| amr_files = ู ููููููุงุช('.', ููู ูุท='*.ุฃู ุฑ') | |
| print(f'ู ููููููุงุช .ุฃู ุฑ: {len(amr_files)}') | |
| for f in amr_files: | |
| print(f' {ุงูุณูู _ู ููููู(f)} ({ุญูุฌูู (f)} bytes)') | |