IOError: [Errno 13] Permission denied,在打开文件时发生权限拒绝的错误。

4
我有一个Python脚本,用于查找文件夹中的任何更改(添加/删除)。 我正在寻找任何新添加的文件,并希望打开它们并从中读取一些数据。
代码如下:
# 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。尽管我对文件夹和文件有权限。我编写了另一个测试代码,直接给open()函数提供文件名打开相同的文件,它确实起作用了。
如果有人能指出我犯的错误,将不胜感激。
编辑:错误信息。
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'

附言:我是 Python 新手,可能犯了一些很蠢的错误。谢谢。

'ad.sjs_hdr' 是一个文件还是一个文件夹? - Rostyslav Dzinko
@RostyslavDzinko 这是一个文件。 - abhi
1个回答

4
.listdir()方法只提供没有路径的文件名,您可能试图在当前目录而不是由path命名的目录中打开文件。
您必须使用os.path.join函数pathitem组合起来:
for item in added:
    print item
    fullfilename = os.path.join(path, item)
    ad=open(fullfilename,'r')
    print ad.read()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接