Python打印模块表示文件名未定义

时间:2017-02-25 00:55:00

标签: python print-module

在2010年的第一本Python书上工作,我遇到了一个练习,我必须将列表打印到特定文件中,将另一个列表打印到另一个列表中。所有的代码,一切都工作,除了打印模块,说明文件的名称没有定义,这是非常奇怪的,因为练习的解决方案,它是我的完全相同的代码。

import os

man = []
other = []

try: 

    data = open('ketchup.txt')

    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(":", 1)
            line_spoken = line_spoken.strip()
            if role == 'Man':
                man.append(line_spoken)
            elif role == 'Other Man':
                other.append(line_spoken)
        except ValueError:
            pass
    data.close()
except IOError:
    print("The data file is missing!")
print(man)
print(other)

try:
    out = open("man_speech.txt", "w")
    out = open("other_speech.txt", "w")
    print(man, file=man_speech)          #HERE COMES THE ERROR
    print(other, file=other_speech)

    man_speech.close()
    other_speech.close()
except IOError:
    print("File error")

以下是IDLE的错误:

  

追踪(最近一次通话):     文件“C:\ Users \ Monok \ Desktop \ HeadFirstPython \ chapter3 \ sketch2.py”,第34行,       print(man,file = man_speech)   NameError:名称'man_speech'未定义

我是否对语法做错了,或者我没有得到打印模块的工作原理?这本书没有给我任何线索。我在这里和其他一些论坛上也检查过很多问题,但是我的代码似乎没有任何问题,而且我实际上已经倾斜了。

2 个答案:

答案 0 :(得分:2)

在此处打开文件时:

out = open("man_speech.txt", "w")

您正在将文件分配给out变量,没有名为man_speech的变量。这就是它引发NameError并说man_speech没有定义的原因。

您需要将其更改为

man_speech = open("man_speech.txt", "w")

other_speech

的情况相同

答案 1 :(得分:1)

文件名似乎存在问题:

out = open("man_speech.txt", "w")    # Defining out instead of man_speech
out = open("other_speech.txt", "w")  # Redefining out
print(man, file=man_speech)          # Using undefined man_speech
print(other, file=other_speech)      # Using undefined other_speech

您不会将open的结果分配给man_speech,而是分配给out。因此错误消息:

NameError: name 'man_speech' is not defined

代码应为

man_speech = open("man_speech.txt", "w")
other_speech = open("other_speech.txt", "w")
print(man, file=man_speech)
print(other, file=other_speech)