2013-11-25 3 views
2

Я хотел бы видеть примеры различных formattings доступны с чем-то сродни следующее:печати все форматы теперь()

>>> for d in dir(datetime.datetime.now()): 
... print("\n"+d) 
... print(getattr(datetime.datetime.now(), d)) 

Однако getattr() возвращает только описание объекта, а не значение (даже когда обернутый в str()):

>>> getattr(datetime.datetime.now(), 'isoformat') 
<built-in method isoformat of datetime.datetime object at 0x020B41A0> 

Так как я мог бы состряпать эквивалент этого с isoformat() динамично добавил:

>>> datetime.datetime.now().isoformat() 
'2013-11-25T15:01:09.075919' 

Должен ли я обратиться к eval()?

+1

Различные методы, показанные 'dir' для datetime, в целом не имеют никакого отношения к форматам. –

ответ

4

Поскольку вы нигде не храните его, он печатает представление. getattr фактически возвращает объект, который вы хотите:

>>> import datetime 
>>> isoformat = getattr(datetime.datetime.now(), 'isoformat') 
>>> isoformat() 
'2013-11-25T20:05:57.262055' 

Пока что вы делаете только печать строкового представления:

>>> print(isoformat) 
<built-in method isoformat of datetime.datetime object at 0x0000000002F66D50> 

Надеются, что это помогает!

+0

Ницца, спасибо alKid! – dotancohen

+0

Добро пожаловать! – aIKid

1
d = dir(datetime.datetime.now()) 
for i in d: 
    if not i.startswith('_'): # Skip private members 
     m = getattr(datetime.datetime.now(), i) # Get the method 
     print i, # Print the name 
     try:  # some will not work without more info or at all. 
     print m() 
     except Exception, e: 
     print e 

Должно хорошо начать. На python 2.6 приведенный выше код дает:

astimezone Required argument 'tz' (pos 1) not found 
combine Required argument 'date' (pos 1) not found 
ctime Mon Nov 25 13:23:18 2013 
date 2013-11-25 
day 'int' object is not callable 
dst None 
fromordinal fromordinal() takes exactly 1 argument (0 given) 
fromtimestamp Required argument 'timestamp' (pos 1) not found 
hour 'int' object is not callable 
isocalendar (2013, 48, 1) 
isoformat 2013-11-25T13:23:18.190000 
isoweekday 1 
max 'datetime.datetime' object is not callable 
microsecond 'int' object is not callable 
min 'datetime.datetime' object is not callable 
minute 'int' object is not callable 
month 'int' object is not callable 
now 2013-11-25 13:23:18.195000 
replace 2013-11-25 13:23:18.195000 
resolution 'datetime.timedelta' object is not callable 
second 'int' object is not callable 
strftime Required argument 'format' (pos 1) not found 
strptime strptime() takes exactly 2 arguments (0 given) 
time 13:23:18.198000 
timetuple time.struct_time(tm_year=2013, tm_mon=11, tm_mday=25, tm_hour=13, tm_min=23, tm_sec=18, tm_wday=0, tm_yday=329, tm_isdst=-1) 
timetz 13:23:18.199000 
today 2013-11-25 13:23:18.199000 
toordinal 735197 
tzinfo 'NoneType' object is not callable 
tzname None 
utcfromtimestamp utcfromtimestamp() takes exactly 1 argument (0 given) 
utcnow 2013-11-25 13:23:18.202000 
utcoffset None 
utctimetuple time.struct_time(tm_year=2013, tm_mon=11, tm_mday=25, tm_hour=13, tm_min=23, tm_sec=18, tm_wday=0, tm_yday=329, tm_isdst=0) 
weekday 0 
year 'int' object is not callable 
+0

Очень круто, спасибо Стив! – dotancohen

Смежные вопросы