gpt4 book ai didi

Python 日期时间类型错误,需要整数

转载 作者:行者123 更新时间:2023-11-28 21:30:04 25 4
gpt4 key购买 nike

我对 Python 还很陌生,所以希望我遇到的问题有一个简单的解决方案。

在工作中,我们总是使用 Shell (ksh) 或 Perl 来完成所有脚本编写工作。由于 Python 随 Solaris 一起提供已经有一段时间了,它(终于)被批准作为脚本平台了。我已经开始使用 Python 对我们的脚本进行一些改进原型(prototype)。

我想要完成的是获取时间戳和表示时间戳的字符串,并为某些日期算术创建日期时间对象。

我的示例代码如下:

#!/bin/python

import datetime

fileTime="201009211100"
format = "YYYYmmdd"

yIdxS = format.find('Y')
yIdxE = format.rfind('Y')

if not fileTime[yIdxS:yIdxE+1].isdigit():
print "ERROR: Year in wrong format"
exit
else:
print "Year [" + fileTime[yIdxS:yIdxE+1] + "]"

mIdxS = format.find('m')
mIdxE = format.rfind('m')

if not fileTime[mIdxS:mIdxE+1].isdigit():
print "ERROR: Month in wrong format"
exit
else:
print "Month [" + fileTime[mIdxS:mIdxE+1] + "]"

dIdxS = format.find('d')
dIdxE = format.rfind('d')

if not fileTime[dIdxS:dIdxE+1].isdigit():
print "ERROR: Day in wrong format"
exit
else:
print "Day [" + fileTime[dIdxS:dIdxE+1] + "]"


old = datetime.date( fileTime[yIdxS:yIdxE+1], \
fileTime[mIdxS:mIdxE+1], \
fileTime[dIdxS:dIdxE+1] );

我收到以下输出/错误:

Year [2010]
Month [09]
Day [21]
Traceback (most recent call last):
File "./example.py", line 37, in <module>
fileTime[dIdxS:dIdxE+1] );
TypeError: an integer is required

我不明白为什么会收到此 TypeError 异常。我对 Python 动态类型的理解是,如果字符串都是数字,我不需要将字符串转换为整数。

所以问题似乎是我错过了我需要的东西,或者我对语言的理解有缺陷。

任何帮助将不胜感激。谢谢。

最佳答案

强烈考虑使用datetime.datetime.strptime :

import datetime

tests=["201009211100","201009211199"]
for fileTime in tests:
try:
date=datetime.datetime.strptime(fileTime,'%Y%m%d%H%M')
print(date)
except ValueError as err:
print(fileTime,err)

# 2010-09-21 11:00:00
# ('201009211199', ValueError('unconverted data remains: 9',))

或者,如果您安装第三方模块,dateutil ,你可以这样解析它:

In [106]: import dateutil.parser as dparser

In [107]: dparser.parse('201009211100')
Out[107]: datetime.datetime(2010, 9, 21, 11, 0)

请注意,dateutil 会尝试在您未显式声明格式的情况下解析字符串。必须谨慎使用(测试和控制可接受的输入字符串),否则会出现不明确的日期,dateutil 可能会错误地解析。

关于Python 日期时间类型错误,需要整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825056/

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