2014-04-22 9 views
14

मैं पाइथन का उपयोग कर विंडोज ओएस पर एक अस्थायी फ़ाइल बनाने और लिखने का प्रयास कर रहा हूं। मैंने एक अस्थायी फ़ाइल बनाने के लिए पायथन मॉड्यूल tempfile का उपयोग किया है।अनुमति मेरी अस्थायी फ़ाइल को लिखने के लिए अस्वीकार

लेकिन जब मैं उस अस्थायी फ़ाइल को लिखने के लिए जाता हूं तो मुझे Permission Denied त्रुटि मिलती है। क्या मुझे अस्थायी फ़ाइलों को लिखने की अनुमति नहीं है ?! क्या मुझसे कुछ गलत हो रही है? अगर मैं एक अस्थायी फ़ाइल बनाना और लिखना चाहता हूं तो मुझे इसे पायथन में कैसे करना चाहिए? मैं सुरक्षा उद्देश्यों के लिए temp निर्देशिका में एक अस्थायी फ़ाइल बनाना चाहता हूं, न कि स्थानीय रूप से (डीआईआर में .exe निष्पादित हो रहा है)।

IOError: [Errno 13] Permission denied: 'c:\\users\\blah~1\\appdata\\local\\temp\\tmpiwz8qw'

temp = tempfile.NamedTemporaryFile().name 
f = open(temp, 'w') # error occurs on this line 

उत्तर

20

NamedTemporaryFile वास्तव में आप के लिए फ़ाइल बनाता है, तो आपके पास लेखन के लिए इसे खोलने के लिए के लिए कोई आवश्यकता नहीं है।

वास्तव में, Python docs राज्य:

नाम फ़ाइल खोलने के लिए दूसरी बार है, जबकि नामित अस्थायी फ़ाइल अभी भी खुला है इस्तेमाल किया जा सकता हैं, प्लेटफार्मों पर बदलता रहता है (यह इतने पर इस्तेमाल किया जा सकता यूनिक्स; यह विंडोज एनटी या बाद में पर नहीं हो सकता है)।

यही कारण है कि आपको अपनी अनुमति त्रुटि मिल रही है। क्या आप शायद के बाद कर रहे हैं है:

f = tempfile.NamedTemporaryFile(mode='w') # open file 
temp = f.name        # get name (if needed) 
+0

एक उपयोगी स्पष्टीकरण और इस पोस्ट में अधिक जानकारी नहीं है http://stackoverflow.com/questions/4290716/how-to-write-bytes-to-a-file- इन-अजगर-3-बिना जानने-एन्कोडिंग –

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