2009-08-24 14 views
8

द्वारा हेक्साडेसिमल फ़ाइल बाइट को संपादित करने के लिए मैं एक छवि फ़ाइल खोलने और हेक्साडेसिमल मान बाइट-बाय-बाइट को अतिरिक्त करने में सक्षम होना चाहता हूं। मुझे नहीं पता कि यह कैसे करना है और "पायथन बाइट संपादन" और "पायथन बाइट एरे" गुगलिंग करना आश्चर्यजनक रूप से कुछ भी नहीं आया है। क्या कोई मुझे लाइब्रेरी की तरफ इशारा कर सकता है जिसे मुझे उपयोग करने की ज़रूरत है, विशिष्ट तरीकों से मैं Google, या ट्यूटोरियल/मार्गदर्शिकाएं कर सकता हूं?पायथन - बाइट

+0

क्या आप ऐसा कुछ प्रोग्रामेटिक रूप से करना चाहते हैं? या आप एक हेक्स संपादक की तलाश में हैं? –

+0

@ डेविड: मुझे लगता है कि मैं इसे प्रोग्रामेटिक रूप से करना चाहता हूं। मेरी कस्टम छवि फ़ाइल में 7 आयाम हैं जो प्रत्येक पिक्सेल को परिभाषित करते हैं, और वे मूल रूप से सभी 7 आयामों में वृद्धि करके एक खंड में व्यवस्थित होते हैं। मैं इसे पूर्ववत करना चाहता हूं, सभी 7 आयामों को अलग करें, और उन्हें फिर से इकट्ठा करें ताकि वे छवियों के लिए TIF फ़ाइल विनिर्देश को फिट कर सकें। मुझे लगता है कि प्रोग्रामेटिक रूप से सबसे अच्छा किया जाएगा, हाँ? – sepiroth

+0

मैं पीआईएल पुस्तकालय के माध्यम से टीआईएफएफ हिस्सा करता हूं। – Nelson

उत्तर

8

पायथन मानक पुस्तकालय में एमएमएपी मॉड्यूल है, जिसका उपयोग वास्तव में करने के लिए किया जा सकता है। अधिक जानकारी के लिए the documentation पर एक नज़र डालें।

+1

+1। आम तौर पर मैं फ़ाइल को स्मृति में लोड करने के लिए स्मृति में लोड करता हूं, लेकिन अगर फ़ाइल बहुत लंबी हो सकती है, तो mmap बेहतर है। बेशक अगर फ़ाइल बहुत * लंबी * लंबी है और आपके पता स्थान में फिट नहीं होगी, तो यह वापस खुलने के लिए है (पथ, 'आर + बी') और तलाशें() ... – bobince

+0

@bobince: आपके बिंदु पर राय क्या एक फाइल एसएचएच के जवाब के साथ जाने और एमएमएपी पर जाने के लिए "बहुत लंबा" होगा? – sepiroth

+0

@hatorade: मानक खुली/पढ़ी/बंद फ़ाइलें उपलब्ध स्मृति के रूप में बड़ी फ़ाइलों को संभाल सकती हैं, लेकिन आप mmap() का उपयोग करके प्रदर्शन सुधार देखेंगे क्योंकि केवल आपके द्वारा संशोधित पृष्ठों को डिस्क से पढ़ा जाएगा। मैं अनुमान लगाता हूं कि फ़ाइल में मेगाबाइट या तो हिट होने पर महत्वपूर्ण प्रदर्शन अंतर स्पष्ट होंगे। –

4

Hachoir ढांचे को पार्स और बाइनरी फ़ाइलों को संपादित करने अजगर पुस्तकालय और उपकरणों का एक सेट है:

http://pypi.python.org/pypi/hachoir-core

यह आम फ़ाइल प्रकारों की जानकारी है, तो यह सिर्फ हो सकता है कि तुम क्या जरूरत है।

10
कि आप क्या करना यह open the file in binary mode करने के लिए पर्याप्त हो सकता है और सामान्य file कार्यों के साथ डेटा पढ़ सकता है चाहते हैं पर निर्भर करता है

:

# load it 
f = open("somefile", 'rb') 
data = f.read() 
f.close() 

# do something with data 
data.reverse() 

# save it 
f = open("somefile.new", 'wb') 
f.write(data) 
f.close() 

अजगर वास्तव में परवाह नहीं करता data स्ट्रिंग है, तो "बाइनरी" या " पाठ "डेटा। यदि आप उचित आकार की फ़ाइल में सरल संशोधन करना चाहते हैं तो यह शायद काफी अच्छा है।

+0

हाँ मैं बस एक कस्टम छवि फ़ाइल खोलना चाहता हूं और इसे .tiff में परिवर्तित करना चाहता हूं। यह चाल हो सकती है क्योंकि मैं मूल रूप से कस्टम छवि फ़ाइल में पिक्सेल डेटा असाइन करने के लिए उपयोग किए गए एल्गोरिदम को "पूर्ववत" कर रहा हूं और प्रति .tif विनिर्देशों को पुनर्गठित कर रहा हूं – sepiroth

1

stuct मॉड्यूल देखें।

यह मॉड्यूल पायथन मूल्यों और सी structs के बीच रूपांतरण करता है जो पाइथन स्ट्रिंग के रूप में दर्शाए जाते हैं। यह सी स्ट्रक्चर के ले-आउट के कॉम्पैक्ट विवरण और पाइथन मूल्यों से इच्छित रूपांतरण के रूप में प्रारूप स्ट्रिंग्स (नीचे समझाया गया) का उपयोग करता है। इसका उपयोग अन्य स्रोतों के साथ फ़ाइलों में या नेटवर्क कनेक्शन से संग्रहीत बाइनरी डेटा को संभालने में किया जा सकता है।

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