gpt4 book ai didi

python - IOError: [Errno 22] 传入的时钟() 参数无效

转载 作者:行者123 更新时间:2023-11-30 23:58:12 25 4
gpt4 key购买 nike

我没有找到很好的解释来解释什么是无效参数错误以及什么会导致这些错误。

我当前正在使用的示例是

import sys
mylog="mylog.log"
sys.stdout = open(mylog,'w')
#lots of code
#.
#.
#.
#End of lots of code
from time import clock
print "blablabla",clock()

我在时钟线上收到 IOError Invalid Argument 错误。我也尝试过

print "blablabla\t%s"%clock()

有关此错误的任何信息都会有很大帮助。这些行在短期运行时工作得很好,只是在运行代码一段时间后就中断了。我尝试将缓冲区大小设置为较低的值,例如 45-100 行。

最佳答案

我无法在自己的计算机上重现这个确切的问题,因此我无法给出具体的建议,但这里有一些关于如何调试此类问题的一般评论。

当您在 python 的 IOError 或 OSError 异常中看到“无效参数”时,这意味着解释器尝试进行系统调用,但失败并将 errno 设置为代码 EINVAL。 (顺便说一句,Python 确实不应该打印 errno 代码的数值 - 符号名称是标准化的,但数字不是。)您需要做的第一件事是找出它是哪个系统调用,以及最简单的方法为此,请在 strace 实用程序下运行您的程序,如下所示:

$ strace -f -o strace.log python yourscript.py [arguments...]

等待它失败,然后在文件 strace.log 中搜索“-1 E”(正是该字符串)。你会发现类似这样的内容:

times({tms_utime=162, tms_stime=123, tms_cutime=0, tms_cstime=0}) = 1718279979
write(1, "2.85\n", 5) = -1 EINVAL (Invalid argument)

然后,您可以阅读失败的系统调用的手册页(本例中为“man 2 write”),并查找 errno 代码名称(在此例中为EINVAL)案例),看看它说出了什么问题。

在这种情况下,我强烈怀疑您在 Python 解释器或操作系统中发现了错误。 “无效参数”的意思就是它所说的 - 系统调用的输入参数之一具有无效值。您没有在脚本中执行任何棘手的操作,因此要么解释器弄乱了其系统调用,要么内核误解了解释器想要的内容。

关于python - IOError: [Errno 22] 传入的时钟() 参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com