Error in python code (TypeError: coercing to Unicode: need string or buffer, file found) -
त्रुटि पंक्ति 49 "fileSizeRemainingInBytes = os.path.getsize (inFile)" पर होती है "फ़ाइल में मैं प्राप्त करना चाहता हूँ फ़ाइल आकार। अजगर प्रलेखन में मुझे जो समझा गया था, यह सही होना चाहिए। कोई मुझे बता सकता है कि समस्या क्या है।
import sys, os बफर = 1000 प्रयास करें: # ओपन फ़ाइल में पढ़ने के लिए बाइनरी मोड में फ़ाइल = खुली (sys.argv [1], "आरबी" ) प्रिंट "फ़ाइल नाम है:", IOError को छोड़कर inFile.name: IOExceptions के लिए # जांच प्रिंट "एरर खोलने की फ़ाइल" sys.exit () अन्य: # कॉपी करने के लिए # नई निर्देशिका बनाएं, नई निर्देशिका में फ़ाइल बनाएं यदि (ओएसपैथ .isdir ("recv")): os.chdir ("recv") का प्रयास करें: outFile = open (inFile.name, "wb") IOError को छोड़कर: प्रिंट "कुछ गलत हुआ फ़ाइल बना रहा है" sys.exit () अन्य : Os.mkdir ("recv") os.chdir ("recv") का प्रयास करें: outFile = open (inFile.name, "wb") IOError को छोड़कर: प्रिंट "कुछ गलत हुआ फ़ाइल बना रहा है" sys.exit () # बाइट की प्रतिलिपि बनाने के लिए नई निर्देशिका फाइल में सिम्युरेनाइज़िंग इनबिइटें = ओएस.path.getsize (inFile) प्रिंट "प्रारंभिक आकार:", फाइलसिझोइमैनिंगइबाईट फाइल के दौरान फ़ाइल आकार प्रतिबिंबित InBytes & gt; 0: प्रिंट फ़ाइलसिझोराइमिंगइनबाइट्स बाइटटोकॉपी = इनफ़ाइल। रीड (बफर); outFile.write (bytesToCopy); InFile.close ()
os.path.getsize एक तर्क के रूप में एक फ़ाइल पथ लेता है, फ़ाइल ऑब्जेक्ट नहीं। तो आप वास्तव में os.path.getsize (inFile.name) को कॉल करना चाहते हैं। ध्यान दें कि यह आपको कॉपी करने के लिए शेष बाइट्स की संख्या नहीं देगा; यह आपको हर बार मूल्यांकन किए जाने पर पूरी फाइल का आकार देगा। शेष बाइट्स की संख्या प्राप्त करने के लिए, आपको कुल आकार की बाइट्स का ट्रैक रखना होगा और फ़ाइल आकार से यह कुल घटाना होगा।
इस तरह से कुछ काम करना चाहिए:
import sys import os बफर = 1000 के साथ खुले (sys.argv [1], "rb") as_file के रूप में: # के रूप में किसी उप-निर्देशिका # करने या अपने वर्तमान निर्देशिका `recv` निर्देशिका यदि वह पहले से मौजूद नहीं है नहीं तो os.path.isdir (" recv "): os.mkdir (" recv ") # करने के लिए फ़ाइल का पथ बनाएं जो आप कॉपी करना चाहते हैं जब खोला, तो आप अपने इनपुट फ़ाइल, # रूप में एक ही फ़ाइल नाम के साथ एक फ़ाइल # होगा, लेकिन यह आपके `recv` उपनिर्देशिका out_file_path = os.path.join (" recv ", in_file.name) में होगा # पढ़ें साथ बाइट्स खुला (out_file_path, "पश्चिम बंगाल") out_file के रूप में: bytes_read = 0 bytes_to_read = os.path.getsize (in_file.name), जबकि bytes_read & LT; bytes_to_read: out_file.write (in_file.read (बफर)) bytes_read + = मिनट (बफर, bytes_to_read - bytes_read) प्रिंट "{} / {} की नकल की बाइट" .format (bytes_read, bytes_to_read) < / div>
Comments
Post a Comment