دعم اسم ملف Python Long Long في Windows
-
21-09-2019 - |
سؤال
أكتب نص Python لنسخ الملفات ؛ لسوء الحظ ، يستمر الفشل لأن اسم الملف طويل جدًا (> 256). هل هناك على أي حال للتعامل مع هذه المشكلة؟
أنا أستخدم Python 2.5.4 و Windows XP.
هتافات،
المحلول
يستخدم مسارات تبدأ بالسلسلة \\?\
.
نصائح أخرى
من أجل استخدام \\?\
بادئة (كما هو مقترح بالفعل) ، تحتاج أيضًا إلى التأكد من استخدام سلاسل Unicode كأسماء ملفات ، وليس سلاسل عادية (بايت).
هل جربت الحلول المقترحة في هذه الموضوع القديم ، إكسب. خدعة "البادئة السحرية"؟ لا أعرف ما إذا كانت مشكلة Underyling (التي لا نستخدمها الصحيح من بين العديد من واجهات برمجة التطبيقات Windows المتاحة للملفات) تم إصلاحها على الإطلاق ، ولكن يجب أن تعمل الحلول ...
لأي شخص آخر يبحث عن الحل هنا:
- تحتاج إلى إضافة بادئة
\\?\
كما ذكرنا بالفعل ، وتأكد من أن السلسلة هي Unicode ؛ - إذا كنت تستخدم Shutil ، لا سيما مثل Shutil.rmtree باستخدام طريقة onerror ، فستحتاج إلى تعديلها أيضًا لإضافة بادئة حيث يتم تجريدها في مكان ما في الطريق.
عليك أن تكتب شيئًا مثل:
def remove_dir(directory):
long_directory = '\\\\?\\' + directory
shutil.rmtree(long_directory, onerror=remove_readonly)
def remove_readonly(func, path, excinfo):
long_path = path
if os.sep == '\\' and '\\\\?\\' not in long_path:
long_path = '\\\\?\\' + long_path
os.chmod(long_path, stat.S_IWRITE)
func(long_path)
هذا مثال على Python 3.x بحيث تكون جميع الأوتار Unicode.
لا تنتمي إلى StackOverflow