मेरे पास 22 उप-निर्देशिकाओं वाली निर्देशिका है। कुल मिलाकर, निर्देशिका लगभग 750GB आकार की है और मुझे GDrive पर इस डेटा की आवश्यकता है ताकि मैं इसके साथ Google Colab में काम कर सकूं। स्पष्ट रूप से इसे अपलोड करने में एक पूर्ण आयु लगती है (विशेषकर मेरे धीमे कनेक्शन के साथ) इसलिए मैं इसे ज़िप करना चाहता हूं, इसे अपलोड करना चाहता हूं, फिर इसे क्लाउड में खोलना चाहता हूं। मैं 7zip का उपयोग कर रहा हूं और ज़िप प्रारूप और "सामान्य" संपीड़न स्तर का उपयोग करके प्रत्येक उपनिर्देशिका को ज़िप कर रहा हूं। (संपादित करें: अब पुष्टि कर सकते हैं कि मुझे 7z और टार प्रारूप के लिए एक ही त्रुटि मिलती है)। प्रत्येक उपनिर्देशिका आकार में 14 और 20GB के बीच समाप्त होती है। फिर मैं इसे अपलोड करता हूं और निम्नलिखित कोड का उपयोग करके इसे Google Colab में अनज़िप करने का प्रयास करता हूं:

drive.mount('/content/gdrive/')
!apt-get install p7zip-full
!7za x "/content/gdrive/My Drive/av_tfrecords/drumming_7zip.zip" -o"/content/gdrive/My Drive/unzipped_av_tfrecords/" -aos

यह एक त्रुटि फेंकने से पहले ज़िप फ़ाइल के कुछ हिस्से को निकालता है। कई प्रकार की त्रुटियां हैं और कभी-कभी कोड त्रुटि को फेंकने से पहले फ़ाइल को खोलना भी शुरू नहीं करेगा। यह सबसे आम त्रुटि है:

Can not open the file as archive

ERROR: Unknown error -2147024891

Archives with Errors: 1

अगर मैं !7za कमांड को फिर से चलाने का प्रयास करता हूं, तो यह इस त्रुटि को फेंकने से पहले ज़िप फ़ाइल से एक या 2 फाइलें निकाल सकता है:

terminate called after throwing an instance of 'CInBufferException'

यह ज़िप संग्रह के भीतर विशेष फ़ाइलों के बारे में भी शिकायत कर सकता है:

ERROR: Headers Error : drumming/yt-g0fi0iLRJCE_23.tfrecords

मैंने इसका उपयोग करने का भी प्रयास किया है:

!unzip -n "/content/gdrive/My Drive/av_tfrecords/drumming_7zip.zip" -d "/content/gdrive/My Drive/unzipped_av_tfrecords/"

लेकिन वह सिर्फ त्रुटियों को फेंकना शुरू कर देता है:

file #254:  bad zipfile offset (lseek):  8137146368

file #255:  bad zipfile offset (lseek):  8168710144

file #256:  bad zipfile offset (lseek):  8207515648

हालांकि मैं कोलाब में एक समाधान पसंद करूंगा, मैंने "ज़िप एक्सट्रैक्टर" नामक जीड्राइव में उपलब्ध एक ऐप का उपयोग करने का भी प्रयास किया है। लेकिन वह भी एक त्रुटि देता है और इसमें डेटाकोटा होता है।

यह अब 4 ज़िप फ़ाइलों में हुआ है और हर बार जब मैं कुछ नया करने की कोशिश करता हूं, तो अपलोड गति के कारण इसे आज़माने में लंबा समय लगता है। ऐसा क्यों हो रहा है और मैं इस मुद्दे को कैसे हल कर सकता हूं, इसके लिए कोई स्पष्टीकरण की सराहना की जाएगी। इसके अलावा, मैं समझता हूं कि मैं जो करने की कोशिश कर रहा हूं उसके लिए शायद विकल्प हैं और उनकी भी सराहना की जाएगी, भले ही वे सीधे प्रश्न का उत्तर न दें। शुक्रिया!

3
michael_question_answerer 1 अप्रैल 2020, 20:58

1 उत्तर

सबसे बढ़िया उत्तर

मुझे एक ही समस्या है

इसे हल करें

new ProcessBuilder(new String[] {"7z", "x", fPath, "-o" + dir)

कमांड लाइन ऐरे का उपयोग करें, न कि केवल फुल लाइन का!

भाग्य!

यह आदेश इस पर निर्भर करता है कि इसे Terminal.app या किसी scala प्रोग्राम से कहा जाता है या नहीं, यह अलग तरह से व्यवहार क्यों करता है?

1
Bestows In Constructing 11 सितंबर 2020, 09:36