جدول المحتويات

دراسة توزيع الملفات

الاستخدامات المرجوة

  os.access('/usr/share/thawab/', os.W_OK)

حصر المجلدات

كود من أجل ويندوز

الكود التالي يستخرج مكان ال application data و my documents

import winshell
winshell.application_data()
 winshell.my_documents()

الكود التالي يستخرج مكان ال mydocuments

from win32com.shell import shell
df = shell.SHGetDesktopFolder()
pidl = df.ParseDisplayName(0, None,  
    "::{450d8fba-ad25-11d0-98a8-0800361b1103}")[1]
mydocs = shell.SHGetPathFromIDList(pidl)

كلاهما يحتاجان python win32 extension والتي حجمها حوالي 6 ميغا

وهناك طريقة لا تحتاج اعتماديات وهي دالة get_appdata من winpaths

أما لمعرفة الأقراص يمكننا عمل

drives=filter(lambda j: os.path.exists(j), [chr(i)+':\\' for i in range(67,91)])

للمزيد

لينكس وويندوز

في نظام لينكس يعتبر المجلد ~/.thawab

وفي نظام ويندوز يتم استخدام local appdata

وهو في الحالتين مجلد خاص بالمستخدم لحفظ بيانات البرامج وإعداداتها

قرص مدمج يحتوي المكتبة والفهارس

في هذه الحالة يكون لدينا مكتبة للقراءة فقط توفر تصفح وبحث سريع دون أن تشغل أي شيء على القرص الصلب.

يجوز أن يحتوي القرص فهرسا لكن المشكلة في ملفات mcache حيث لو وضع ملفات كتب على سي فإن حصرها وتتبعها يجب أن يكون في مكان قابل للكتابة

دراسة طرق التنفيذ

إذن اختصار الطريقة:

  1. أولا: يتم فحص المجلد الذي يحتوي الملف التنفيذي:
  2. ثانيا: يتم إضافة كل المجلدات التالية:
    • في لينكس /usr/local/thawab/db ثم /usr/share/thawab/db
    • في ويندوز X:/thawab/db حيث X هي C فما فوق
  3. ثالثا: يتم اختبار قابلية كل ما سبق للكتابة واحتواؤه على ملف اسمه .THAWAB.PREFIX بالترتيب

فإن كان قابلا للكتابة ووجد ملف اسمه .THAWAB.PREFIX يتم تقديمه على أنه السابقة المطلوبة (مثلا افتراض أننا في فلاش) وإلا نستخدم .thawab داخل البيت أو ثواب داخل MyDocuments كسابقة قابلة للكتابة (دون أن تحتويا .THAWAB.PREFIX ودون فحص قابلية الكتابة)