2015-02-13 29 views
6

Tôi đang viết mã xử lý dữ liệu, trong đó tôi tạo tệp mới, ghi dữ liệu đã xử lý vào tệp này và đóng. Nhưng tệp phải được đóng ở chế độ chỉ đọc, vì vậy nó sẽ không bị vô tình sửa đổi. Điều này có thể được thực hiện bằng Python?Thay đổi tệp sang chế độ chỉ đọc bằng Python

Trả lời

9

Đối với điều này bạn sử dụng 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) 

Lưu ý rằng điều này giả định bạn có phù hợp quyền và bạn muốn nhiều hơn chỉ là chủ sở hữu để có thể đọc tệp. Xóa S_IROTHS_IRGRP nếu thích hợp nếu không phải như vậy.

CẬP NHẬT

Nếu bạn cần phải thực hiện các tập tin có thể ghi một lần nữa, chỉ cần gọi os.chmod như vậy:

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 

Đơn giản chỉ cần gọi đây là trước khi bạn mở tập tin để viết, sau đó gọi các hình thức đầu tiên để chỉ đọc lại sau khi bạn hoàn tất.

+0

Và làm thế nào để thay đổi nó để viết khi tôi chạy chương trình. Tôi muốn thay đổi nó để viết khi chương trình chạy và khi nó thoát ra nó nên được thay đổi thành chế độ chỉ đọc. –

+0

Ah, bạn không chỉ định điều đó trong câu hỏi gốc. Tôi sẽ cập nhật – aruisdante

-1

Tôi đoán bạn có thể sử dụng mô-đun os sau khi viết trong hồ sơ của bạn để thay đổi quyền tập tin như thế này:

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

gọi chmod qua 'os.system' không di động, nó sẽ không hoạt động trên cửa sổ. Tốt hơn là sử dụng phương thức 'os.chmod' trực tiếp. – aruisdante

Các vấn đề liên quan