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
وهو في الحالتين مجلد خاص بالمستخدم لحفظ بيانات البرامج وإعداداتها
في هذه الحالة يكون لدينا مكتبة للقراءة فقط توفر تصفح وبحث سريع دون أن تشغل أي شيء على القرص الصلب.
إذن اختصار الطريقة:
فإن كان قابلا للكتابة ووجد ملف اسمه .THAWAB.PREFIX يتم تقديمه على أنه السابقة المطلوبة (مثلا افتراض أننا في فلاش) وإلا نستخدم .thawab داخل البيت أو ثواب داخل MyDocuments كسابقة قابلة للكتابة (دون أن تحتويا .THAWAB.PREFIX ودون فحص قابلية الكتابة)