gpt4 book ai didi

Python 包导入未纳入函数中

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

我有一个非常基本的脚本,它将一段数据作为 CSV 文件,并将时间戳转换为整个小时。这次时间转换的一部分涉及到包 datetime,但是包的导入并没有被纳入到重新格式化的函数中,我不知道为什么。

我的代码:

from datetime import datetime, timedelta
from dateutil import parser
import sys


def whole_hours(datafileloc, outfileloc):
whole_hour_data = {}
f = open(datafileloc, "r")
data = f.readlines()
f.close()

for line in data[1:]:
time = parser.parse(line.split(",")[0])
values = line.split(",")[1:]

if time.minute >= 30:
newtime = datetime(year=time.year, month=time.month, day=time.day, hour=time.hour, minute=0) + timedelta(hours=1)
else:
newtime = datetime(time.year, time.month, time.day, time.hour, 0)

if newtime not in whole_hour_data.keys():
whole_hour_data[newtime] = {"oldtime": time, "values": values}
else:
oldtime = whole_hour_data[newtime]["oldtime"]
if abs((time - newtime).total_seconds()) < abs((oldtime - newtime).total_seconds()):
whole_hour_data[newtime] = {"oldtime": time, "values": values}

with open(outfileloc, "w") as outfile:
outfile.write(data[0])
for datetime in sorted(whole_hour_data.keys()):
outfile.write("{datetime},{values}".format(datetime=datetime, values=",".join(whole_hour_data[datetime]["values"])))


whole_hours("C:/Users/<user>/Documents/test.csv", "C:/Users/<user>/Documents/output.csv")

执行此脚本时,出现以下错误:

Traceback (most recent call last):
File "C:/Users/<user>/test.py", line 73, in <module>
whole_hours("C:/Users/<user>/Documents/test.csv", "C:/Users/<user>/Documents/output.csv")
File "C:/Users/<user>/test.py", line 54, in whole_hours
newtime = datetime(year=time.year, month=time.month, day=time.day, hour=time.hour, minute=0) + timedelta(hours=1)
UnboundLocalError: local variable 'datetime' referenced before assignment

注意我已经屏蔽了我的用户名:)我发现我可以通过在函数内部使用 from datetime import datetime 来解决此错误,或者将 datetime 包作为函数的参数,但我是想知道为什么在脚本开始时已导入包时需要执行此操作。我制作了几个类似的脚本,不需要这种额外的导入。

最佳答案

这里有一段代码,您可以在 for 循环中迭代值:

for datetime in sorted(whole_hour_data.keys()):

当你这样做时,我认为Python现在将日期时间视为局部变量而不是全局导入语句。您应该更改此变量名称。

关于Python 包导入未纳入函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48024407/

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