بيثون shutil.copytree - تجاهل الأذونات
سؤال
بيثون shutil.copytree
ليست مرنة جدا؛ ما هي أبسط طريقة لإضافة دعم لتجاهل الأذونات أثناء النسخ في copytree
(دون الحاجة إلى إعادة كتابة تنفيذها)؟
غير ذلك، copytree
يفشل مثل هذا:
(…)”[Errno 45] Operation not supported: ‘/path/foo/bar’”
المحلول
لديك shutil.py
في توزيع بيثون القياسي الخاص بك (على أوبونتو، الألغام تحت /usr/lib/python2.6
على سبيل المثال؛ قد يكون النوافذ C:\Python26\lib
؟). وظيفة copytree ليست سوى 38 خطا فقط (34 إذا لم تكسب التعليقات)، وتنص نهاية DocString صراحة:
XXX Consider this example code rather than the ultimate tool.
وبالتالي فإن أبسط طريقة ستكون في حالة تغيير / إضافة خطوط زوجين إلى Stoptree، أو ابحث عن مكتبة أخرى، أن نكون صادقين.
نصائح أخرى
لا الخيط آمن (أو مستحسن بشكل عام) ولكن موافق لبرنامج Scriway:
استيراد sutil _orig_copystat = shutil.copystat shutil.copystat = lambda x، y: x shutil.copytree (src، dst) shutil.copystat = _orig_copystat
لا تنتمي إلى StackOverflow