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'

PS私はPythonを初めて使用するので、本当にばかげた間違いを犯しているかもしれません。

4

1 に答える 1

4

この.listdir()メソッドは、パスなしのファイル名のみを提供します。おそらく、で指定されたディレクトリではなく、現在のpathディレクトリでファイルを開こうとしています。

os.path.join関数を使用して、次の項目をまとめる必要がpathありitemます。

for item in added:
    print item
    fullfilename = os.path.join(path, item)
    ad=open(fullfilename,'r')
    print ad.read()
于 2012-08-12T19:56:27.837 に答える