পাইথন ফাইল বাইট লিখুন


143

আমার একটি ফাংশন রয়েছে যা একটি স্ট্রিং দেয়। স্ট্রিংটিতে ক্যারেজ রিটার্ন এবং নতুন লাইন ফিডস (0x0D, 0x0A) রয়েছে। তবে আমি যখন কোনও ফাইলে লিখি তখন এতে কেবল নতুন লাইন ফিড থাকে। ক্যারেজ রিটার্ন এবং নতুন লাইন ফিড অন্তর্ভুক্ত করার জন্য কি আউটপুট পাওয়ার কোনও উপায় আছে?

msg = function(arg1, arg2, arg3)
f = open('/tmp/output', 'w')
f.write(msg)
f.close()

একটি পড়া আছেfile.__doc__
Wim

উত্তর:


257

আপনি যদি বাইট লিখতে চান তবে আপনার ফাইলটি বাইনারি মোডে খুলতে হবে।

f = open('/tmp/output', 'wb')

8
যেহেতু ওপি একটি উইন্ডোজবিহীন প্ল্যাটফর্ম ব্যবহার করছে বলে মনে হচ্ছে, এটি কেবল পাই 3 তে কাজ করে। পাই 2 এ আপনার ব্যবহার করা দরকার io.open
lvc

2
আমি মনে করি এটি পাইথন নিজেই একটি বাগ, প্রদত্ত পাইথন রান টাইমে ডেটা প্রকারগুলি সনাক্ত করতে পারে এবং বাইনারি এবং পাঠ্য ইনপুটগুলির মধ্যে সনাক্ত করতে পারে, আমি মনে করি এটি পাইথন নিজেই স্থির করা উচিত, কেন এই পৃষ্ঠাতে কয়েকশো মানুষ শেষ হচ্ছে, যদি পাইথন স্ট্ডলিবের একটি বিবৃতি দ্বারা এটি এড়ানো যেত, আপনি যদি রাজি হন তবে আপভোট করুন, আপনাকে অবশ্যই আমাকে বিস্মৃত করতে হবে।
ফিলিপ ভাল্ডেস

2
দুর্ভাগ্যক্রমে, ফিলিপাল্ডেস কন্টেন্টটি লেখার সময় এটি যদি কখনও ভুলভাবে সনাক্ত হয় তবে তা অবাক করে দিতে পারে। আরও বিরক্তিকরভাবে, সেই ভুল সনাক্তকরণটি কেবলমাত্র কিছু বিস্ময়কর প্রান্তের ক্ষেত্রেই ঘটতে পারে যা অবাক করা এবং ট্র্যাক করা কঠিন হয়ে পড়ে। পরিবর্তে সুস্পষ্ট আচরণের উপর নির্ভর করা, যদিও এর অর্থ আমাদের কাছে এই প্রশ্ন রয়েছে, তা নিশ্চিত করে যে আইও বিভিন্ন পরিস্থিতিতে যেভাবে আচরণ করে সে বিষয়ে আমি নিশ্চিত থাকতে পারি।
লিয়াম ডসন

1
বাইট ফাইলগুলির কি এক্সটেনশন হবে?
চিয়া ইয়ংকাং

@FelipeValdes এটা অন্তত বিস্ময় / আশ্চর্য (নীতিকে সম্পর্কিত en.wikipedia.org/wiki/Principle_of_least_astonishment )। আপনার পদ্ধতির আরও যথাযথ নাম দেওয়া হবে:open_and_detect_file_type()
henrycjc
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.