fd.seek() IOError: [错误 22] 无效参数

7 投票
1 回答
18635 浏览
提问于 2025-04-15 22:05

我的Python解释器(版本2.6.5)在以下代码部分抛出了上述错误:

fd = open("some_filename", "r")
fd.seek(-2, os.SEEK_END) #same happens if you exchange the second arg. w/ 2
data=fd.read(2);

最后调用的是fd.seek()

Traceback (most recent call last):
    File "bot.py", line 250, in <module>
        fd.seek(iterator, os.SEEK_END);
IOError: [Errno 22] Invalid argument

奇怪的是,这个错误发生在我执行整个代码的时候,而不是在我只执行文件打开的那部分代码时。在执行这部分代码时,打开的文件肯定是存在的,磁盘也没有满,变量“iterator”包含的值和第一个代码块中的值是一样的。我可能犯了什么错误呢?

提前谢谢你们!

1 个回答

8

来自 lseek(2) 的说明:

EINVAL

这个错误表示你传入的参数 whence 不是三个有效的选项之一:SEEK_SET、SEEK_CUR 或 SEEK_END;或者你计算出来的文件位置是负数,或者超出了可以查找的设备的末尾。

所以,记得仔细检查一下 iterator 的值。

撰写回答