在Python 3.2中制作.txt文件日历而不使用.calendar

时间:2013-03-30 21:14:37

标签: python datetime text-files datetime-format python-3.2

我正在尝试编写一个程序,它会给我一个很好的.txt文件显示今年的日历,但是,我不想使用日历功能,但是 datetime

我希望它具有以下格式(我想要在其旁边的每周的每一天的前3个字母):

1月1日星期二

1月2日星期三

一直到

12月31日星期二

(基本上365行,每行10个字符,每行以换行符“\ n”结尾)。 这是我从各种stackflow问题,教程和模块中收集的内容。到目前为止还没有成功。

import datetime
from datetime import date
textfile = file('new_file.txt','wt')
your_date.isoformat()
your_date.strftime("%A %d. %B %Y")

我的主要问题是我不熟悉如何让python给我一系列日期(这里是2013年,但它也可能只是时间的任何增量,例如2011年6月到2014年12月)和当然要打印它旁边的星期几。通过这种方式,它可以适应您可能需要这个小日历的任何时间段。我想也许可以分配每一天的数字(1是星期一,2星期二是模式,如果我是正确的)一周中一天的前3个字母,所以它都很整齐,长度相同。

2 个答案:

答案 0 :(得分:2)

这是循环的一种方法:

inc = datetime.timedelta(days=1)
curr = datetime.date(2013, 1, 1)
end = datetime.date(2014, 1, 1)
while curr < end:
    # print out the date and whatnot
    curr += inc

答案 1 :(得分:0)

#!/usr/bin/env python3
import sys
from datetime import date, timedelta

def gen_calendar(year=None):
    if year is None:
        year = date.today().year

    current = date(year, 1, 1)
    delta   = timedelta(days=1)

    while current.year == year:
        yield current.strftime('%a %b %d')
        current += delta

if __name__ == '__main__':
    year = None
    if len(sys.argv) > 1:
        year = int(sys.argv[1])

    for str_date in gen_calendar(year):
        print(str_date)

这会打印到stdout,所以你可以从控制台将它重定向到一个文件,这是常见的,但如果你想直接从脚本写入文件,用这个替换最后两行:

    with open('calendar.txt', 'w') as f:
        for str_date in gen_calendar(year):
            print(str_date, file=f)