【Python】把文件名命名成canlendar.py竟然导致无法使用canlendar模块 附赠2020年月历

这个bug困扰了我一阵,直到在 http://www.codingke.com/question/15489 找到了解决问题的钥匙,真是没想到居然是这个原因导致的。

下面是出错信息,可以看到只要目录下有canedar.py连其它python文件都执行不下去了。

D:\workspace\python\.calendar >python pc.py
Traceback (most recent call last):
  File , in <module>
    import calendar
  File , in <module>
    result = calendar.calendar()
TypeError: 'module' object is not callable

D:\workspace\python\.calendar >python calendar.py
Traceback (most recent call last):
  File , in <module>
    import calendar
  File , in <module>
    result = calendar.calendar()
TypeError: 'module' object is not callable

D:\workspace\python\.calendar >

删掉或者改名canendar.py就OK了,下面是输出:

D:\workspace\python\.calendar >python pc.py

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su

   November
Mo Tu We Th Fr Sa Su

D:\workspace\python\.calendar >

打印这么整齐的日历就寥寥五六行代码:

#日历模块
import calendar

#calendar() 获取指定年份的日历字符串
result = calendar.calendar(2019)
print(result)

#month()获取指定月份的日历字符串
result = calendar.month(2019,11)
print(result)

日子总是过得飞快,转眼2019年只剩下两个月了,你今年的计划都完成了吗,明年又有什么规划呢?附赠2020年年历如下:

                                  2020

      January                   February                   March
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
          1  2  3  4                         1       1  2  3  4  5  6  7
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       8  9 10 11 12 13 14
12 13 14 15 16 17 18       9 10 11 12 13 14 15      15 16 17 18 19 20 21
19 20 21 22 23 24 25      16 17 18 19 20 21 22      22 23 24 25 26 27 28
26 27 28 29 30 31         23 24 25 26 27 28 29      29 30 31

       April                      May                       June
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
          1  2  3  4                      1  2          1  2  3  4  5  6
 5  6  7  8  9 10 11       3  4  5  6  7  8  9       7  8  9 10 11 12 13
12 13 14 15 16 17 18      10 11 12 13 14 15 16      14 15 16 17 18 19 20
19 20 21 22 23 24 25      17 18 19 20 21 22 23      21 22 23 24 25 26 27
26 27 28 29 30            24 25 26 27 28 29 30      28 29 30
                          31

        July                     August                  September
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
          1  2  3  4                         1             1  2  3  4  5
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       6  7  8  9 10 11 12
12 13 14 15 16 17 18       9 10 11 12 13 14 15      13 14 15 16 17 18 19
19 20 21 22 23 24 25      16 17 18 19 20 21 22      20 21 22 23 24 25 26
26 27 28 29 30 31         23 24 25 26 27 28 29      27 28 29 30
                          30 31

      October                   November                  December
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
             1  2  3       1  2  3  4  5  6  7             1  2  3  4  5
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       6  7  8  9 10 11 12
11 12 13 14 15 16 17      15 16 17 18 19 20 21      13 14 15 16 17 18 19
18 19 20 21 22 23 24      22 23 24 25 26 27 28      20 21 22 23 24 25 26
25 26 27 28 29 30 31      29 30                     27 28 29 30 31

可以看出这份年历和上面的不一样了,上回指定的是周一为第一天,这回指定的是周日为第一天,代码也做了相应调整:

#日历模块
import calendar

#calendar() 获取指定年份的日历字符串
calendar.setfirstweekday(calendar.SUNDAY) # 这里指定周日为第一天
result = calendar.calendar(2020)
print(result)

--END-- 2019年11月4日16:51:51

上一篇:应用OpenCV进行OCR字符识别


下一篇:oracle中批量生成字段类型的脚本