AttributeError:“列表”对象没有属性“astimezone”

Posted

技术标签:

【中文标题】AttributeError:“列表”对象没有属性“astimezone”【英文标题】:AttributeError: 'list' object has no attribute 'astimezone' 【发布时间】:2016-12-21 08:37:49 【问题描述】:

我的python脚本:

import ftplib
import hashlib
import httplib
import pytz
from datetime import datetime
import urllib
from pytz import timezone
import os.path, time
import glob

def ftphttp():
 files = glob.glob('Desktop/images/*.png')
 ts = map(os.path.getmtime, files)
 dts = map(datetime.fromtimestamp, ts)
 print ts

 timeZone= timezone('Asia/Singapore')
 #converting the timestamp in ISOdatetime format
 localtime = dts.astimezone(timeZone).isoformat()

我试图获取多个文件的时间戳。我可以打印出我文件夹中的所有文件

 [1467910949.379998, 1466578005.0, 1466528946.0]

但它也提示我这个关于时区的错误。有人有什么想法吗?

Traceback (most recent call last):
 File "<pyshell#76>", line 1, in <module>
 ftphttp()
File "/home/kevin403/Testtimeloop.py", line 22, in ftphttp
 localtime = dts.astimezone(timeZone).isoformat()
AttributeError: 'list' object has no attribute 'astimezone'

【问题讨论】:

dts 是一个list(由map 在这里返回),而您正在调用astimezone,这是它没有的方法。 不相关,但我强烈建议使用标准的 4 个空格缩进。 【参考方案1】:

您正试图调用对象列表上的方法,而不是列表中的对象。尝试在第一个对象上调用该方法:

localtime = dts[0].astimezone(timeZone).isoformat()

或映射列表以获取 iso 格式的所有时间戳:

localtimes = map(lambda x: x.astimezone(timeZone).isoformat(), dts)

【讨论】:

我试过了,但我得到了这个错误:ValueError: astimezone() cannot be applied to a naive datetime @AlvinWee 这是另一个问题,这里似乎有答案***.com/questions/12626045/…【参考方案2】:

dts 是时区列表。所以你需要这样做:

[ts.astimezone(timeZone) for ts in dts]

这将为您提供三个时区的列表

【讨论】:

以上是关于AttributeError:“列表”对象没有属性“astimezone”的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:“列表”对象在转换为数组时没有属性“形状”

AttributeError:“列表”对象没有属性“排序值”

Keras AttributeError:“列表”对象没有属性“ndim”

AttributeError: 'property' 对象没有属性 'copy' - 尝试在 Django Rest 中获取对象列表时

AttributeError:“列表”对象没有属性“barh”

AttributeError 列表对象没有属性添加