2013-10-15 1 views
28

मैं उन्हें ज़िप निकालने से पहले फ़ाइलों को कैसे हटा सकता हूं?पायथन: अस्थायी निकालने के बिना ज़िप से फ़ाइल खोलें

मैं पायगम का उपयोग कर रहा हूं। डिस्क स्थान को सहेजने के लिए, मेरे पास सभी छवियां ज़िप्पी हुई हैं। क्या ज़िप फ़ाइल से सीधे दी गई छवि लोड करना संभव है? उदाहरण के लिए: pygame.image.load('zipFile/img_01')

+1

किस तरह की छवि फाइलें? जीआईएफ, जेपीईजी, और पीएनजी पहले ही संपीड़ित हैं। – hughdbrown

उत्तर

41

विन्सेंट पोविर्क का जवाब पूरी तरह से काम नहीं करेगा;

import zipfile 
archive = zipfile.ZipFile('images.zip', 'r') 
imgfile = archive.open('img_01.png') 
... 

आप में इसे बदलने के लिए है:

import zipfile 
archive = zipfile.ZipFile('images.zip', 'r') 
imgdata = archive.read('img_01.png') 
... 

जानकारी के लिए zipfile डॉक्स here

+0

image = pygame.image.load (imgfile, 'img_01.png') टाइप एरर: बिना शून्य बाइट्स के स्ट्रिंग होना चाहिए, स्ट्र – user2880847

+0

आप उस त्रुटि को ठीक करने के लिए किस कोड में टाइप करते हैं? – Jellema

+0

कृपया अपने परिवर्तन की व्याख्या करें। फ़ाइल की सामग्री के साथ एक स्ट्रिंग देता है; एक फ़ाइल की तरह वस्तु खोलता है। pygame के प्रलेखन का कहना है image.load एक फ़ाइल नाम या फ़ाइल की तरह वस्तु चाहता है। –

2

सिद्धांत रूप में, हाँ, उस में बातें प्लग का मामला है zipfile आप एक ज़िप संग्रह में एक फ़ाइल के लिए एक फ़ाइल जैसी वस्तु दे सकते हैं, और image.load एक फ़ाइल की तरह स्वीकार करेंगे। वस्तु। तो इस तरह कुछ काम करना चाहिए:

import zipfile 
archive = zipfile.ZipFile('images.zip', 'r') 
imgfile = archive.open('img_01.png') 
try: 
    image = pygame.image.load(imgfile, 'img_01.png') 
finally: 
    imgfile.close() 
9
import io, pygame, zipfile 
archive = zipfile.ZipFile('images.zip', 'r') 

# read bytes from archive 
img_data = archive.read('img_01.png') 

# create a pygame-compatible file-like object from the bytes 
bytes_io = io.BytesIO(img_data) 

img = pygame.image.load(bytes_io) 

मैं इस बस अब खुद के लिए यह पता लगाने की कोशिश कर रहा था पढ़ सकते हैं और इस ताकत सोचा भविष्य में इस प्रश्न में आने वाले किसी भी व्यक्ति के लिए उपयोगी हो।

संबंधित मुद्दे