के साथ मौजूद है या नहीं, शुरुआत में मैं os.path.isdir
का उपयोग करने के बारे में सोच रहा था लेकिन मुझे नहीं लगता कि यह ज़िप फ़ाइलों के लिए काम करता है। क्या ज़िप फ़ाइल में देखने का कोई तरीका है और यह सत्यापित करें कि यह निर्देशिका मौजूद है? मैं जितना संभव हो unzip -l "[email protected]"
का उपयोग करना बंद करना चाहता हूं, लेकिन अगर यह एकमात्र समाधान है तो मुझे लगता है कि मेरे पास कोई विकल्प नहीं है।जांचें कि कोई निर्देशिका ज़िप फ़ाइल में पाइथन
उत्तर
बस इसके अंत में फ़ाइल नाम "/" के साथ जांचें।
import zipfile
def isdir(z, name):
return any(x.startswith("%s/" % name.rstrip("/")) for x in z.namelist())
f = zipfile.ZipFile("sample.zip", "r")
print isdir(f, "a")
print isdir(f, "a/b")
print isdir(f, "a/X")
आप क्योंकि यह संभव है कि संग्रह कोई निर्देशिका स्पष्ट होता है इस लाइन
any(x.startswith("%s/" % name.rstrip("/")) for x in z.namelist())
का उपयोग करें; निर्देशिका नाम के साथ बस एक पथ।
निष्पादन परिणाम:
$ mkdir -p a/b/c/d
$ touch a/X
$ zip -r sample.zip a
adding: a/ (stored 0%)
adding: a/X (stored 0%)
adding: a/b/ (stored 0%)
adding: a/b/c/ (stored 0%)
adding: a/b/c/d/ (stored 0%)
$ python z.py
True
True
False
आप ZipFile.namelist() के साथ निर्देशिकाओं की जांच कर सकते हैं।
import os, zipfile
dir = "some/directory/"
z = zipfile.ZipFile("myfile.zip")
if dir in z.namelist():
print "Found %s!" % dir
यह फ़ाइलों के लिए काम करता है लेकिन निर्देशिका नहीं :(कम से कम मेरे लिए नहीं। –
अपनी निर्देशिका को सही ढंग से स्वरूपित करने के लिए अपनी .zip फ़ाइल के 'namelist() 'को प्रिंट करने का प्रयास करें। – enderskill
हाँ, मैंने सुनिश्चित किया है कि निर्देशिका है वहाँ। मैं इसे docx फ़ाइलों के लिए करने की कोशिश कर रहा हूं, जो कि ज़िप फ़ाइलों को वैसे भी हैं, जिससे सही बात नहीं होनी चाहिए? –
आप इस में निर्मित पुस्तकालय zipfile के प्रयोग से कर सकते हैं।
import zipfile
z = zipfile.ZipFile("file.zip")
if "DirName/" in [member.filename for member in z.infolist()]:
print("Directory exists in archive")
पायथन 32 के साथ परीक्षण और कार्यात्मक।
किसी भी कारण से यह docx फ़ाइलों के लिए काम नहीं करता है। :( –
आप ज़िप के बजाए एक डॉक्क्स फ़ाइल का उपयोग करने की कोशिश कर रहे हैं? एक्सटेंशन को .zip पर पुनर्नामित करें और इसे फिर से प्रयास करें, इसे काम करना चाहिए। – Lanaru
यह ठीक अनजिपिंग काम करता है, और मैं इसे सभी फ़ाइलों को प्रिंट करने के लिए प्राप्त कर सकता हूं। लेकिन निर्देशिका "शब्द" namelist() में नहीं है, बल्कि अलग-अलग फाइलें, जैसे शब्द/webSettings.xml, इसलिए यह एक मैच नहीं मिल रहा है। –
- 1. जांचें कि फ़ाइल पाइथन
- 2. जांचें कि फ़ाइल में पाइथन
- 3. जांचें कि कोई संख्या पाइथन
- 4. जांचें कि निर्देशिका
- 5. जांचें कि कोई निर्देशिका (फ़ाइल सिस्टम) रूट है
- 6. जांचें कि कोई फ़ाइल Yii
- 7. जांचें कि क्या पाइथन
- 8. जांचें कि कोई फ़ाइल वाइल्डकार्ड
- 9. जांचें कि एक * प्रकार * फ़ाइल पाइथन
- 10. जांचें कि बैच फ़ाइल
- 11. जांचें कि पथ पाइथन
- 12. जांचें कि पाइथन
- 13. जांचें कि फ़ाइल
- 14. VCLZip: ज़िप फ़ाइल में "आभासी" निर्देशिका
- 15. जांचें कि फ़ाइल ksh
- 16. .NET में, जांचें कि वर्तमान उपयोगकर्ता निर्देशिका
- 17. जांचें कि कोई फ़ाइल खुली है
- 18. कैसे जांचें कि सूची में केवल पाइथन
- 19. यह जांचने के लिए कि कोई फ़ाइल निर्देशिका या पाइथन में नियमित फ़ाइल है या नहीं?
- 20. जांचें कि क्या पाइथन (लिनक्स/यूनिक्स में)
- 21. जांचें कि सेट में मान पाइथन
- 22. जांचें कि क्या पाइथन पैकेज स्थापित है
- 23. जांचें कि फ़ाइल
- 24. जांचें कि निर्देशिका में निर्देशिका मौजूद है या नहीं?
- 25. जांचें कि कोई ऑब्जेक्ट
- 26. जांचें कि फ़ाइल php
- 27. PHP जांचें कि फ़ाइल मौजूद है और निर्देशिका
- 28. जांचें कि क्या कोई संख्या पहले से ही पाइथन
- 29. जांचें कि कोई पैरामीटर पाइथन मॉड्यूल है या नहीं?
- 30. ज़िप फ़ाइल
धन्यवाद! अच्छा यह आपके द्वारा प्रदान किए गए नमूने के साथ काम करता है। लेकिन मैं इसे docx फ़ाइलों के लिए करने की कोशिश कर रहा हूं। अनिवार्य रूप से मैं जांच रहा हूं कि ज़िप फ़ाइल में निर्देशिका "शब्द" है, लेकिन यह मुझे झूठी प्रतिक्रिया दे रहा है :( –
बस अपने 'docx' में फ़ाइलों की सूची मुद्रित करने का प्रयास करें और देखें कि इसके साथ क्या अजीब बात है:' प्रिंट zipfile.ZipFile ("sample.docx", "r")। Namelist() ' –
मुझे लगता है कि आपके पास 'शब्द' से पहले कुछ उपसर्ग है। कृपया यह जाँचें। –