سؤال

سؤال:

كيف أحصل على دفق بايت يعمل مثل Stringio ل Python 2.5؟

تطبيق:

أقوم بتحويل ملف PDF إلى نص، لكن لا أرغب في حفظ ملف على القرص الثابت.

أفكار أخرى:

احسب أنني أستطيع استخدام Stringio، ولكن لا يوجد معلمة وضع (أعتقد "سلسلة" تعني وضع النص).

يبدو أن فئة Io.bytesio جديدة في V2.6، بحيث لا تعمل من أجلي أيضا.

لدي حل مع وحدة Tempfile، ولكن أود تجنب أي قراءة / يكتب إلى / من القرص الثابت.

هل كانت مفيدة؟

المحلول

في Python 2.x، تعني "السلسلة" "بايت"، و "Unicode" تعني "السلسلة". يجب عليك استخدام StringIO أو cStringIO وحدات. يعتمد الوضع على أي نوع من البيانات التي تمر بها مع المعلمة المخزن المؤقت.

نصائح أخرى

إذا كنت تعمل مع PDF، ثم StringIO يجب أن تكون على ما يرام طالما دفعت في الاهتمام إلى المستندات:

يمكن أن يقبل كائن Stringio إما سلاسل Unicode أو 8 بت، ولكن خلط الاثنين قد يأخذان بعض الرعاية. إذا تم استخدام كلاهما، فإن سلاسل 8 بت لا يمكن تفسيرها على أنها ASCII 7 بت (التي تستخدم القليل الثامن) ستتسبب في رفع UnicoDeError عند استدعاء GetValue ().

لاحظ هذا ليس صحيح cStringIO:

على عكس ملفات الذاكرة التي تنفذها وحدة Stringio، فإن تلك الموجودة من هذه الوحدة غير قادرة على قبول سلاسل Unicode التي لا يمكن تشفيرها كسلاسل ASCII العادية.

انظر الوثائق الكاملة في:

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