类型错误:'module'对象不可调用:日历模块

3

我第一次使用Python中的日历函数,这是我的代码:

import calendar

print ("The calender of year 2018 is : ")
print (calendar.calendar(2018,2,1,6))
print ("The starting day number in calendar is : ",end="")
print (calendar.firstweekday())

我得到了以下输出。
The calender of year 2018 is : 
Traceback (most recent call last):
  File "C:/Users/AAKASH PATEL/Desktop/calendar.py", line 5, in <module>
    import calendar
  File "C:/Users/AAKASH PATEL/Desktop\calendar.py", line 10, in <module>
    print (calendar.calendar(2018,2,1,6))
TypeError: 'module' object is not callable

我该如何解决这个问题?

仔细查看您的回溯。您导入了自己的脚本。 - Martijn Pieters
3个回答

4

将您的脚本名称从 calendar.py 改为 calendarScript.py

"C:/Users/AAKASH PATEL/Desktop/calendar.py"

to

"C:/Users/AAKASH PATEL/Desktop/calendarScript.py", 

注意: 不要将您的脚本命名为模块的相同名称。


calendarScript: 不是很 Pythonic (PEP8)。 - CristiFati
@CristiFati...这只是一个例子 :) - Rakesh

2

你将脚本命名为calendar.py,因此导入的就是这个文件。你可以在回溯信息中看到:

  File "C:/Users/AAKASH PATEL/Desktop/calendar.py", line 5, in <module>
    import calendar
  File "C:/Users/AAKASH PATEL/Desktop\calendar.py", line 10, in <module>
    print (calendar.calendar(2018,2,1,6))

所以,import calendar 导入了 calendar.py,现在它有一个名为 calendar 的属性,这就是你的脚本。
将你的脚本重命名,不要与内置库冲突;例如,calendar_demo.py 就可以。一旦你这样做了,它就能完美地工作了,在我的系统上,它输出如下:
The calender of year 2018 is :
                                  2018

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

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

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

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

The starting day number in calendar is : 0

请注意,calendar.calendar(2018)即可;下面三个参数的默认值(w代表列宽,l代表每周行数,c代表月份列之间的间距)分别为2、1和6。

1
当复制您的代码并执行它时,它可以完美地工作!但我看到您的脚本被称为calendar.py!Python认为这是您想要导入的内容!因此,请将您的脚本重命名为其他名称!

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