尝试创建CSV时,“module”对象没有“now”属性

27

你好,我遇到了导入CSV文件的问题,出现了错误提示。但是在另一台机器上运行相同的代码却没有问题。我是否需要安装其他库来解决这个问题?请帮忙检查一下。

def exportar_a_csv_grl(request):
    #Fecha actual
    hoy = datetime.now().date()
    #Creado el:
    creado_hoy = hoy.strftime("%m/%d/%Y")
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment;filename="Reporte de Miembros ' +      creado_hoy + '.csv"'
response['Content-Type'] = 'text/csv; charset=utf-8'
response.write("\xEF\xBB\xBF")

writer = csv.writer(response)
miembros = Miembro.objects.all().extra(select={'miem_monto': "aplicacionmediexcel_miembro_monto.monto"},
                                       tables=["aplicacionmediexcel_miembro_monto"], where=[
        """aplicacionmediexcel_miembro.id=aplicacionmediexcel_miembro_monto.miembro_id"""])
#.extra(select = {'precio':'''select aplicacionmediexcel_miembro_monto.monto from aplicacionmediexcel_miembro_monto, aplicacionmediexcel_miembro where  aplicacionmediexcel_miembro.id = aplicacionmediexcel_miembro_monto.miembro_id'''})
miembros_colec = Miembro_colec.objects.all().extra(
    select={'miem_monto': "aplicacionmediexcel_colectivo_miembro_monto.monto"},
    tables=["aplicacionmediexcel_colectivo_miembro_monto"],
    where=["""aplicacionmediexcel_miembro_colec.id=aplicacionmediexcel_colectivo_miembro_monto.miembro_colec_id"""])
dependientes = Dependiente.objects.all()
dependientes_colec = Dependiente_colec.objects.all()
writer.writerow(['Creado el:             ' + creado_hoy + ' '])
writer.writerow([''])
#csv_data = (
#   ('ID Miembro', 'Apellido Paterno', 'Nombre', 'MI', 'Numero de Seguro Social', 'Tipo de contratacion','Tier', 'Tipo de dependiente', 'Fecha de nacimiento', 'Edad', 'Sexo', 'Estado Civil', 'Correo Electronico', 'Domicilio', 'Ciudad','Estado', 'Codigo Postal', 'Telefono', 'Idioma', 'Region de servicio', 'Medico', 'Fecha Efectiva', 'Tipo Plan', 'Grupo', 'Monto'),
#)
writer.writerow(
    ['ID Miembro', 'Apellido Paterno', 'Nombre', 'MI', 'Número de Seguro Social', 'Tipo de contratación',
     'Tier', 'Tipo de dependiente', 'Fecha de nacimiento', 'Edad', 'Sexo', 'Estado Civil', 'Correo Electrónico',
     'Domicilio', 'Ciudad',
     'Estado', 'Código Postal', 'Teléfono', 'Idioma', 'Región de servicio', 'Médico', 'Actividad', 'Fecha Efectiva',
     'Fecha Renovación', 'Tipo Plan', 'Grupo', 'Monto'])

#t = loader.get_template('my_template_name.txt')
#c = Context({
#   'miembros': miembros,
#})
#response.write(t.render(c))

3
请改用 from datetime import datetime 替代 import datetime - Maciej Gol
3个回答

115

你可能有

import datetime

将其更改为

from datetime import datetime

演示:

>>> import datetime
>>> datetime.now()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'now'
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2013, 10, 7, 13, 57, 18, 456504)
>>> 

此外,您可能会因为缩进而遇到问题。请修复这些问题。


20
或者不改变重要性,使用datetime.datetime.now() - Steven Rumbalski
我用第一个答案解决了那个问题,但现在我遇到了UnicodeEncodeError错误,位置在/brokers/csv/处,'ascii'编解码器无法编码字符u'\u2013',因为它不在128的范围内。 - GioBot
1
所以这里有一个问题:如果您已将其设置为from datetime import datetime并使用datetime.now(),但仍然收到该错误怎么办??? - streetlogics
2
通常我会这样做:from datetime import datetime as dtdatetime 这样事情就更明确了。@streetlogics - karthikr
感谢@karthikr - 你说的太有趣了,因为这正是我最终实现的基本方法(我的被称为from datetime import datetime as datetime_admin)。我考虑过使用某种try/except块在其他导入语句之后重新导入它,但我意识到这样做会将由sally引起的问题从peter那里带回来,并使peter成为将错误返回给sally的人(也就是期望将其简单地导入为import datetime的任何已导入项)。 - streetlogics

12

当你执行时

import datetime

你必须使用

>>> datetime.datetime.now()
datetime.datetime(2016, 12, 14, 1, 15, 58, 606802)

否则,如果您像这样导入

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2016, 12, 14, 1, 17, 31, 772406)

但在一些机器上,由于 sys.path ,您可能会引用错误的 datetime 模块。因此,习惯使用 datetime.datetime 而不是 from datetime import datetimeimport datetime

from datetime import datetime as dt

2

当我使用时,我遇到了同样的问题。

from datetime import datetime,date,timedelta
import pytz
utc=pytz.UTC
today = datetime.now().replace(tzinfo=utc)

我建议的解决方案是导入所有依赖项。
from datetime import *
import pytz
utc=pytz.UTC
today = datetime.now().replace(tzinfo=utc)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接