بنية المشروع
العمل مع الملفات
2 دقيقة للقراءة
عمليات الملفات ضرورية لمشاريع الذكاء الاصطناعي—قراءة المطالبات وحفظ الاستجابات وإدارة التكوينات ومعالجة البيانات.
قراءة الملفات
# قراءة ملف أساسية مع مدير السياق
with open("prompt.txt", "r") as f:
content = f.read()
# قراءة الأسطر في قائمة
with open("data.txt", "r") as f:
lines = f.readlines() # تتضمن \n
# أو: lines = f.read().splitlines() # بدون \n
# قراءة سطر بسطر (فعّال للذاكرة)
with open("large_file.txt", "r") as f:
for line in f:
process(line.strip())
كتابة الملفات
# كتابة نص إلى ملف
with open("output.txt", "w") as f:
f.write("مرحباً، عالم!\n")
f.write("السطر الثاني\n")
# الإلحاق بملف موجود
with open("log.txt", "a") as f:
f.write(f"إدخال جديد: {message}\n")
# كتابة أسطر متعددة
lines = ["السطر 1", "السطر 2", "السطر 3"]
with open("output.txt", "w") as f:
f.writelines(line + "\n" for line in lines)
استخدام pathlib (النهج الحديث)
from pathlib import Path
# إنشاء كائن المسار
file_path = Path("data") / "prompts" / "system.txt"
# التحقق من الوجود
if file_path.exists():
content = file_path.read_text()
# الكتابة إلى ملف
output_path = Path("output") / "response.txt"
output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_text("استجابة الذكاء الاصطناعي هنا")
# عرض الملفات في دليل
for file in Path("prompts").glob("*.txt"):
print(file.name)
عمليات المسار الشائعة
from pathlib import Path
path = Path("/home/user/project/data/file.json")
path.name # "file.json"
path.stem # "file"
path.suffix # ".json"
path.parent # Path("/home/user/project/data")
path.exists() # True/False
path.is_file() # True/False
path.is_dir() # True/False
# ضم المسارات
config_path = Path("config") / "settings.json"
# الحصول على المسار المطلق
absolute = path.resolve()
مثال عملي للذكاء الاصطناعي
from pathlib import Path
import json
class PromptManager:
def __init__(self, prompts_dir="prompts"):
self.prompts_dir = Path(prompts_dir)
self.prompts_dir.mkdir(exist_ok=True)
def save_prompt(self, name, content):
path = self.prompts_dir / f"{name}.txt"
path.write_text(content)
def load_prompt(self, name):
path = self.prompts_dir / f"{name}.txt"
if path.exists():
return path.read_text()
return None
def list_prompts(self):
return [p.stem for p in self.prompts_dir.glob("*.txt")]
# الاستخدام
manager = PromptManager()
manager.save_prompt("system", "أنت مساعد مفيد.")
prompts = manager.list_prompts()
ترميزات الملفات
# تحديد الترميز (مهم للنصوص غير ASCII)
with open("arabic.txt", "r", encoding="utf-8") as f:
content = f.read()
# أو مع pathlib
content = Path("arabic.txt").read_text(encoding="utf-8")
بعد ذلك، سنتعلم التعبيرات النمطية لمعالجة النصوص. :::