2011-11-22 27 views

Trả lời

7

Đây không phải là khá những gì bạn muốn, vì nó chỉ kiểm tra xem một tập tin nhất định là viết-thể . Nhưng trong trường hợp nó rất hữu ích:

import os 

filename = "a.txt" 
if not os.access(filename, os.W_OK): 
    print "Write access not permitted on %s" % filename 

(Tôi không biết về bất kỳ cách nền tảng độc lập để làm những gì bạn yêu cầu)

+1

Cảm ơn! Nhưng có vẻ như os.access chỉ kiểm tra khả năng đọc/ghi của một tệp, nhưng tôi muốn kiểm tra xem tệp có ALREADY được mở hay không. Cảm ơn bạn đã đề xuất thêm. –

0

Tôi không nghĩ rằng có một cách dễ dàng để làm những gì bạn muốn , nhưng bắt đầu có thể là xác định lại mở() và thêm mã quản lý của riêng bạn. Điều đó nói rằng, tại sao bạn muốn làm điều đó?

1

Dưới đây là một giải pháp is_open cho các cửa sổ sử dụng ctypes:

from ctypes import cdll 

_sopen = cdll.msvcrt._sopen 
_close = cdll.msvcrt._close 
_SH_DENYRW = 0x10 

def is_open(filename): 
    if not os.access(filename, os.F_OK): 
     return False # file doesn't exist 
    h = _sopen(filename, 0, _SH_DENYRW, 0) 
    if h == 3: 
     _close(h) 
     return False # file is not opened by anyone else 
    return True # file is already open 
Các vấn đề liên quan