IOError [Errno 13]使用numpy.loadtxt时?

时间:2015-04-14 17:47:23

标签: python numpy

我有一个函数可以轮询文件夹中的新文件,然后在显示时使用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的完整路径有关。当我将工作目录更改为文件所在的目录时,我不再收到权限错误。

1 个答案:

答案 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]