首页 文章

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

提问于
浏览
0

但是,我不想使用日历功能,而是 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星期二是模式,如果我是正确的)一周中一天的前三个字母,所以它都很整齐,长度相同 .

2 回答

  • 0

    这是循环的一种方法:

    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
    
  • 2
    #!/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)
    

相关问题