我有一个函数可以轮询文件夹中的新文件,然后在显示时使用numpy.loadtext加载它们。该函数从一个运行30秒的while循环调用。该函数大部分时间都能正常工作,但是对于某些文件,看似随机,我得到错误IOError:[Errno 13]权限被拒绝:'myfilename1.txt'。以下是我的功能内容:
before = dict([(f, None) for f in os.listdir(mydir)])
while 1:
after = dict([(f, None) for f in os.listdir(mydir)])
added = [f for f in after if f not in before]
# New File
if added:
raw = numpy.loadtxt(mydir + added[0])
return raw
有关为何发生这种情况的任何想法?它正确地轮询和读取大多数传入的文本文件,但有时会发出错误,我找不到系统的原因。
更新:
与使用loadtxt的完整路径有关。当我将工作目录更改为文件所在的目录时,我不再收到权限错误。
答案 0 :(得分:0)
您是否尝试以只读方式打开文件,如果该文件被其他应用程序访问(或者当前仍在创建),则可能会发生冲突。
# New File
if added:
with open(mydir + added[0], 'r') as f:
raw = numpy.loadtxt(f)
您还可以尝试某种形式的IOError处理,等待一段时间,然后再次尝试
import time
before = dict([(f, None) for f in os.listdir(mydir)])
added = False
while 1:
# New File
if added:
try:
raw = numpy.loadtxt(mydir + added[0])
return raw
except IOError:
time.sleep(5)
else:
after = dict([(f, None) for f in os.listdir(mydir)])
added = [f for f in after if f not in before]