2015-02-13 16 views
6

Sto scrivendo un codice di elaborazione dati, in cui creo un nuovo file, scrivo dati elaborati in questo file e chiudo. Ma il file deve essere chiuso in modalità di sola lettura, in modo che non venga modificato accidentalmente. Questo può essere fatto in Python?Modifica file in modalità di sola lettura in Python

risposta

9

Per questo si usa 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) 

Si noti che questo presuppone che adeguata autorizzazioni e che desideri più del solo proprietario per poter leggere il file. Rimuovi S_IROTH e S_IRGRP come appropriato se non è questo il caso.

UPDATE

Se avete bisogno di fare di nuovo il file scrivibile, è sufficiente chiamare os.chmod come così:

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 

Chiamate questo prima di aprire il file per la scrittura, quindi chiamare la prima forma per renderlo di sola lettura di nuovo dopo aver finito.

+0

E come posso cambiarlo per scrivere quando eseguo il programma. Voglio cambiarlo per scrivere quando il programma è in esecuzione e quando esce dovrebbe essere cambiato in modalità di sola lettura. –

+0

Ah, non l'hai specificato nella domanda originale. Aggiornerò – aruisdante

-1

Credo che si potrebbe utilizzare il modulo os dopo la scrittura sul file per cambiare i permessi di file come questo:

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

chiamare chmod tramite 'os.system' non è portabile, non funzionerà su Windows. Meglio usare direttamente il metodo 'os.chmod'. – aruisdante

Problemi correlati