পাইথন ব্যবহার করে এই কোডটিতে 'ডাব্লুবি' এর অর্থ কী?


107

কোড:

file('pinax/media/a.jpg', 'wb')

openপরিবর্তে আপনি ব্যবহার বিবেচনা করা উচিত filefileপাইথন 2 এ অবহেলা করা হয়েছিল (কোন সংস্করণটি খুঁজে পেল না) এবং পাই 3 কে সরানো হয়েছে। (ধন্যবাদ স্কট) আরও তথ্যের জন্য এই প্রশ্নটি দেখুন ।
লুইজ দামিম

1
ব্যবহারের openপরিবর্তে file, যা পাইথন 2 অবচিত এবং পাইথন 3. দেখুন অপসারণ করা হয়েছে stackoverflow.com/questions/112970/...
ম্যাক্স Ghenis

2
এটি অনুমান করা সত্য নয় যে এটি অপের নিজস্ব কোড, বিশেষত প্রশ্নের প্রকৃতি দেওয়া। এটি এক সময় স্পষ্টতই বৈধ ছিল।
mckenzm

উত্তর:


112

ফাইল মোড , লিখুন এবং বাইনারি। যেহেতু আপনি একটি .jpg ফাইল লিখছেন তাই এটি দুর্দান্ত দেখাচ্ছে।

তবে আপনি যদি সেই jpg ফাইলটি পড়তে চান তবে আপনার ব্যবহার করা দরকার 'rb'

অধিক তথ্য

উইন্ডোজে, মোডে যুক্ত 'বি' ফাইলটি বাইনারি মোডে খোলে, তাই এখানে 'আরবি', 'ডাব্লুবি', এবং 'আর + বি' এর মতো মোডগুলিও রয়েছে। উইন্ডোজের পাইথন পাঠ্য এবং বাইনারি ফাইলগুলির মধ্যে পার্থক্য তৈরি করে; পাঠ্য ফাইলগুলিতে প্রান্তের অক্ষরের অক্ষরগুলি স্বয়ংক্রিয়ভাবে কিছুটা পরিবর্তিত হয় যখন ডেটা পড়া বা লেখা হয়। পর্দার আড়ালে থাকা এই ফাইলটি ডেটা ফাইলের জন্য সংশোধন করা ASCII পাঠ্য ফাইলগুলির জন্য ঠিক আছে, তবে এটি জেপিইজি বা এক্সই ফাইলগুলিতে বাইনারি ডেটাগুলিকে দূষিত করবে।


4
কংক্রিটলি, উইন্ডোজে টেক্সট মোডে খোলা একটি ফাইলের জন্য, fd.write("foo\n")আসলে ডিস্কে লেখেন foo\r\n(নোটটি নোট করুন \r)।
সার্জ বলিস্টা

4
আমি নিশ্চিত যে 'বি' প্রতিটি প্ল্যাটফর্মে বাইনারি মোডে ফাইলগুলি খোলায়, কেবল উইন্ডোজ নয় বা এখানেও একটি বিরাট ক্যাভেট থাকবে।
mckenzm

76

wbইঙ্গিত করে যে ফাইলটিতে বাইনারি মোডে লেখার জন্য খোলা হয়।

বাইনারি মোডে লেখার সময় পাইথন ফাইলটিতে লিখিত হওয়ার সাথে সাথে ডেটাতে কোনও পরিবর্তন করে না। পাঠ্য মোডে (যখন bঠিক হিসাবে wবা যখন আপনি পাঠ্য মোড নির্দিষ্ট করে থাকেন তখন বাদ দেওয়া হয় wt) তবে পাইথন ডিফল্ট পাঠ্য এনকোডিংয়ের উপর ভিত্তি করে পাঠ্যটি এনকোড করবে। অতিরিক্তভাবে, পাইথন লাইন এন্ডিংস ( \n) কে প্ল্যাটফর্ম-নির্দিষ্ট লাইন সমাপ্তিতে রূপান্তরিত করে , যা বাইনারি ফাইলকে exeবা pngফাইলের মতো দূষিত করে ।

পাঠ্য মোড তাই পাঠ্য ফাইলগুলি লেখার সময় ব্যবহার করা উচিত (প্লেইন পাঠ্য বা CSV এর মতো কোনও পাঠ্য-ভিত্তিক ফর্ম্যাট ব্যবহার করা হোক না), যখন চিত্রগুলির মতো অ-পাঠ্য ফাইলগুলি লেখার সময় বাইনারি মোড অবশ্যই ব্যবহার করা উচিত।

তথ্যসূত্র:

https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/function.html#open


1
এটি সময়ের সাথে সাথে পরিবর্তিত হতে পারে। উবুন্টু 18.04-তে পাইথন 3...8.৮ চলমান, 'বাইনারি মোড' স্পষ্টতই গুরুত্বপূর্ণ হয়েছে। wbঅপশনটি দিয়ে খোলা একটি পাঠ্য ফাইল (সিএসভি ফর্ম্যাট, এটি শেষ পর্যন্ত যে এতটা গুরুত্বপূর্ণ তা নয়) লিখতে গিয়ে আমার একটি ত্রুটি হয়েছিল । wপরিবর্তে বিকল্পটি ব্যবহার করে , আমি এটি সঠিকভাবে কাজ করতে সক্ষম হয়েছি।
দ্য ডেভিড জনসন 16

1
আপনার মন্তব্য @ ডেভিড জনসনের জন্য ধন্যবাদ। পাইথন ২.6-এ ফিরে এসে ডক্স বলেছে যে bউইন্ডোজে মোডটির কেবলমাত্র প্রভাব ছিল। এটি এখন ডকুমেন্টেশন থেকে সরিয়ে ফেলা হয়েছে এবং বাইনারি মোডটি "সমস্ত ফাইলের জন্য ব্যবহার করা উচিত যা পাঠ্য ধারণ করে না"।
ড্যানিয়েল জি

1
নিশ্চিত কথা, @ ড্যানিয়েল! আমি আপনার সমাধান পোস্ট করার জন্য আপনাকে ধন্যবাদ। 9 বছরেরও বেশি পরে, এটি এখনও সহায়ক। এটা কত মহান? যাই হোক না কেন, আমি কেবল আমার মতো অন্যদের জন্য কিছু নতুন তথ্য যুক্ত করতে চেয়েছিলাম যারা এখনও আসতে পারে এবং এই সহায়কটি খুঁজে পেতে পারে। চিয়ার্স!
দ্য ডেভিড জনসন ২১ শে

দুর্দান্ত ব্যাখ্যা। তবে একটি স্পষ্টতা: আপনি বলেছেন "পাঠ্য ফাইলগুলি লেখার সময় পাঠ্য মোডটি ব্যবহার করা উচিত" । সম্পূর্ণতার জন্য আমি আপনার আগের মন্তব্যে আবার উল্লেখ করব যে "পাইথন কোনও পরিবর্তন করে না [বাইনারি মোডে]", এবং যুক্ত করে যে আপনি কোনও পাঠ্য ফাইলে বাইনারি মোড ব্যবহার করবেন যখন এনকোডিংটি জানেন না (বা যত্ন নেবেন) তবে কেবল বাইটগুলি পড়তে বা লিখতে হবে বা আপনি যদি প্ল্যাটফর্ম নির্বিশেষে লাইন এন্ডিংগুলি সংরক্ষণ করতে চান তবে।
পিসিদেব

8

এটি সেই মোড যা আপনি ফাইলটি খুলছেন opening "ডাব্লুবি" এর অর্থ আপনি ফাইল (ডাব্লু) এ লিখছেন এবং আপনি বাইনারি মোডে (খ) লিখছেন।

আরো জন্য ডকুমেন্টেশন পরীক্ষা করে দেখুন: দাবি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.