提问人:FireStorm 提问时间:10/18/2023 最后编辑:FObersteinerFireStorm 更新时间:10/18/2023 访问量:79
代码引发 OSError:[Errno 22] 使用 time() 函数时参数无效
Code raises OSError: [Errno 22] Invalid argument while using time() function
问:
为什么此代码返回 OSError: [Errno 22] Invalid argument?据我所知,只有当您使用与操作系统交互的函数或使用我的代码中没有的路径时,才应该提出它。
这是我的代码:
if getattr(time.localtime(), 'tm_wday') == 2:
a = time.strptime('2023-10-17 15:20:00', '%Y-%m-%d %H:%M:%S')
b = int(time.mktime(a))
while True:
y = str(getattr(time.gmtime(b - time.time()), 'tm_hour')), ':', str(
getattr(time.gmtime(b - time.time()), 'tm_min')), ':', str(getattr(time.gmtime(b - time.time()), 'tm_sec'))
x = ''.join(y)
print(x, end='\r')
这是完整的错误:
Traceback (most recent call last):
File "C:\Users\School\Desktop\final countdown.py", line 7, in <module>
y = str(getattr(time.gmtime(b - time.time()), 'tm_hour')), ':', str(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument
我尝试在这里和那里添加一个int(),但结果是一样的。上次我尝试时代码运行良好,但现在中断了,尽管我从那以后没有对它进行任何更改。
答:
0赞
Ali Harman
10/18/2023
#1
该错误是由于将负值传递给 ,您应该更新日期和时间,以便给出正值。 不需要转换为“int”。time.gmtime
time.strptime('2023-10-18 12:00:00', '%Y-%m-%d %H:%M:%S')
b - time.time()
b = time.mktime(a)
0赞
FireStorm
10/18/2023
#2
经过一番修补,我发现在 time.gmtime() 函数之外执行 b-time.time() 并在 z 函数中声明它之前有效 以下是修改后的代码:
import time
if getattr(time.localtime(), 'tm_wday') == 0:
while True:
a = time.strptime('' + str(getattr(time.localtime(),'tm_year')) + '-' +str(getattr(time.localtime(), 'tm_mon')) + '-' + str(getattr(time.localtime(), 'tm_mday')) + ' 15:20:00', '%Y-%m-%d %H:%M:%S')
b = int(time.mktime(a))
z = int(b) - time.time()
y = (str(f"{int(getattr(time.gmtime(z), 'tm_hour')):02}"),':',str(f"{int(getattr(time.gmtime(z),'tm_min')):02}"), ':',str(f{int(getattr(time.gmtime(z), 'tm_sec')):02}"))x = ''.join(y)
print(x, end='\r')
评论