मेरे पास टीजीजेड प्रारूप में कई फाइलें हैं जिनमें टैर फाइलें हैं, और टैर फाइलों में स्वयं में txt फाइलें होती हैं। मैं डेटाब्रिक्स में पायथन (3.x यदि संभव हो तो) का उपयोग करके उन्हें पहले टैर और फिर txt प्रारूप (या यदि संभव हो तो तुरंत txt करने के लिए निकालना चाहता हूं) निकालना चाहता हूं।

मैं प्रयास कर चुका हूं

tar = tarfile.open('/dbfs/mnt/mountingPoint/InputFolder/filename.tgz', 'r:gz')
tar.extractall()
tar.close()

लेकिन भले ही यह कोई त्रुटि नहीं देता है, मुझे कोई फाइल नहीं मिलती है। मैं इस विषय के बारे में सभी मौजूदा पोस्टों के माध्यम से चला गया लेकिन वे मददगार नहीं थे।

मैंने भी कोशिश की:

%sh find $/dbfs/mnt/mountingPoint/InputFolder/ -name *.tar.gz -exec tar -xvzf {} -C $/dbfs/mnt/mountingPoint/OututFolder/ \;

और मुझे निम्न त्रुटि मिलती है:

find: ‘$/dbfs/mnt/mountingPoint/InputFolder/’: No such file or directory

मुझे यूनिक्स/लिनक्स के साथ ज्यादा अनुभव नहीं है, इसलिए शायद वहां एक मूर्खतापूर्ण त्रुटि है, क्योंकि फ़ाइल और निर्देशिका निश्चित रूप से वहां हैं।

मैंने बहुत शोध किया है लेकिन उनमें से कोई भी मेरे उपयोग के मामले से मेल नहीं खाता है। किसी भी मदद की अत्यधिक सराहना की जाएगी, अग्रिम धन्यवाद।

0
Green Green 20 जिंदा 2021, 20:43
क्या आप सामुदायिक संस्करण पर काम कर रहे हैं? और आप किस डीबीआर संस्करण का उपयोग कर रहे हैं?
 – 
Alex Ott
20 जिंदा 2021, 21:26
मैं मानक संस्करण पर काम कर रहा हूं और डीबीआर 7.4 . है
 – 
Green Green
21 जिंदा 2021, 14:46

1 उत्तर

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

मैंने tar.extractall() में एक आउटपुट फ़ोल्डर जोड़ा और अब यह काम करता है।

import tarfile
tar = tarfile.open('/dbfs/mnt/mountingPoint/InputFolder/filename.tgz', 'r:gz')
tar.extractall('/dbfs/mnt/mountingPoint/OutputFolder/')
tar.close()

यदि आप फ़ाइलों को एक-एक करके निकालना चाहते हैं, तो दूसरा समाधान यह होगा:

for member in tar.getmembers():
   extracted_f = tar.extract(member, '/dbfs/mnt/mountingPoint/OutputFolder/')

लेकिन फिर भी, अगर किसी के पास शेल सेक्शन का समाधान है, तो मुझे जानना अच्छा लगेगा।

1
Green Green 3 फरवरी 2021, 21:29