2015-02-13 3 views
6

में रीड-ओनली मोड में फ़ाइल बदलें, मैं एक डेटा प्रोसेसिंग कोड लिख रहा हूं, जिसमें मैं एक नई फाइल बनाता हूं, इस फ़ाइल में संसाधित डेटा लिखता हूं और बंद करता हूं। लेकिन फ़ाइल को केवल पढ़ने के लिए मोड में बंद करना होगा, ताकि इसे गलती से संशोधित नहीं किया जा सके। क्या यह पायथन में किया जा सकता है?पायथन

import os 
filename=open("file_name","w") 
filename.write("my text") 
filename.close() 
os.system("chmod 444 file_name") 

उत्तर

9

इसके लिए आप का उपयोग os.chmod

import os 
from stat import S_IREAD, S_IRGRP, S_IROTH 

filename = "path/to/file" 
os.chmod(filename, S_IREAD|S_IRGRP|S_IROTH) 

नोट इस मानता है कि आप उचित है:

+0

और जब मैं प्रोग्राम चलाता हूं तो मैं इसे लिखने के लिए कैसे बदलूं। मैं इसे लिखने के लिए इसे बदलना चाहता हूं जब प्रोग्राम चलता है और जब यह निकलता है तो इसे केवल-पढ़ने के लिए बदल दिया जाना चाहिए। –

+0

आह, आपने मूल प्रश्न में यह निर्दिष्ट नहीं किया है। मैं अपडेट करूंगा – aruisdante

-1

मैं आप अपनी फ़ाइल पर लिखने के बाद ओएस मॉड्यूल इस्तेमाल कर सकते हैं इस तरह फाइल अनुमति बदलने के लिए लगता है अनुमतियां, और आप केवल मालिक को फ़ाइल पढ़ने में सक्षम होने के लिए अधिक चाहते हैं। S_IROTH और S_IRGRP को उचित के रूप में हटाएं यदि यह मामला नहीं है।

अद्यतन

आप फ़ाइल लिखने योग्य फिर से बनाने की जरूरत है, तो बस os.chmod के रूप में तो कहते हैं:

from stat import S_IWUSR # Need to add this import to the ones above 

os.chmod(filename, S_IWUSR|S_IREAD) # This makes the file read/write for the owner 

बस इस फोन से पहले आप लेखन के लिए फ़ाइल को खोलने, तो पहला रूप फोन इसे पूरा करने के बाद इसे केवल पढ़ने के लिए।

+2

'os.system' के माध्यम से chmod को कॉल करने योग्य पोर्टेबल नहीं है, यह विंडोज़ पर काम नहीं करेगा। सीधे 'os.chmod' विधि का उपयोग करने के लिए बेहतर है। – aruisdante