2012-08-12 180 views
3

我有一個Python腳本,它查找文件夾(添加/刪除)中的任何更改。 我正在尋找添加的任何新文件,並希望打開它們並從中讀取一些數據。IOError:[Errno 13]權限被拒絕,打開文件時

的代碼是

# Utility to check for any new jobs 

import os 
import win32file 
import win32event 
import win32con 
import string 

path= r"C:\Users\dZONE\Desktop\py" 

change_handle = win32file.FindFirstChangeNotification  (path,0,win32con.FILE_NOTIFY_CHANGE_FILE_NAME) 

try: 

    old_path_contents = dict ([(f, None) for f in os.listdir (path)]) 
while 1: 
    result = win32event.WaitForSingleObject (change_handle, 500) 


if result == win32con.WAIT_OBJECT_0: 
    new_path_contents = dict ([(f, None) for f in os.listdir (path)]) 
    added = [f for f in new_path_contents if not f in old_path_contents] 
    #deleted = [f for f in old_path_contents if not f in new_path_contents] 
    if added: print "Added: ", ", ".join (added) 
    #if deleted: print "Deleted: ", ", ".join (deleted) 
    # My open 
    print "Len" , len(added) 
    for item in added: 
    print item 
    ad=open(item,'r') 
    print ad.read() 

    old_path_contents = new_path_contents 
    win32file.FindNextChangeNotification (change_handle) 

finally: 
    win32file.FindCloseChangeNotification (change_handle) 

當我試圖打開它給我的IO錯誤13.雖然我的文件夾和文件上的權利的文件。我編寫了另一個測試代碼,並嘗試直接打開文件名打開(),它確實工作。

如果有人能指出我所做的錯誤會非常感激。

編輯:錯誤消息

Traceback (most recent call last): 
File "C:\Users\dZONE\Desktop\py\util.py", line 50, in <module> 
ad=open(item,'r') 
IOError: [Errno 13] Permission denied: 'ad.sjs_hdr' 

PS我是新來的蟒蛇所以也許我做了一些非常愚蠢的錯誤 感謝

+0

是 'ad.sjs_hdr' 文件或文件夾? – 2012-08-12 19:14:39

+0

@RostyslavDzinko這是一個文件 – abhi 2012-08-12 19:15:17

回答

4

.listdir()方法讓你的文件名沒有路徑,唯一的,你可能想打開目前的目錄中的文件,而不是在path指定的目錄中。

您必須使用os.path.join functionpathitem在一起:

for item in added: 
    print item 
    fullfilename = os.path.join(path, item) 
    ad=open(fullfilename,'r') 
    print ad.read() 
+0

它的工作..非常感謝大副 – abhi 2012-08-12 20:04:22

相關問題