سؤال

بيثون 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top