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