سؤال

كنت تعتبر استخدام tmpnam لتعيين اسم ملف الإخراج ل QPrinter. وبعد لكن وثائق بيثون توصي ضد استخدامها.

OS.TMPAM ()

إرجاع اسم مسار فريد مناسب لإنشاء ملف مؤقت. ... التطبيقات هي المسؤولة عن إنشاء الملفات وإدارتها بشكل صحيح تم إنشاؤها باستخدام المسارات التي تم إرجاعها بواسطة TMPAM ()؛ لا يتم توفير تنظيف تلقائي.

تحذير

استخدام TMPAM () عرضة لهجمات Symlink؛ فكر في استخدام TMPFILE () (إنشاء كائن ملف القسم) بدلا من ذلك.

ويندوز: تنفيذ مايكروسوفت tmpnam() قم دائما بإنشاء اسم في الدليل الجذر للمحرك الحالي، وهذا موقع ضعيف بشكل عام لملف TEMP (اعتمادا على الامتيازات، قد لا تكون قادرا على فتح ملف باستخدام هذا الاسم).

  • هل هذا غير آمن حقا إذا لم يحتاج طلبي إلى أي امتيازات خاصة؟
  • ما هي البدائل الآمنة التي تفكر في أنني لا أستطيع فقط تعيين مسار باسم اسم ملف الإخراج لل QPrinter?
هل كانت مفيدة؟

المحلول

يرجى القراءة http://docs.python.org/library/tempfile.html

استخدام ذلك بدلا من ذلك.

نصائح أخرى

اعتمادا على كيفية صفقات QPPrinter الخاصة بك مع ملف موجود بالفعل، يمكنك استخدام QtemporaryFile لإنشاء ملف، ثم أغلق الملف والحفاظ على المرجع إلى كائن QtemporaryFile حوله حتى تتمكن من ذلك. (سيؤدي ذلك أيضا إلى تنظيف الملف لك عند تدمير الكائن.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top