1

这就是我到目前为止所拥有的,我尝试的所有内容都表明文件未打开?有什么基本的方法可以解决这个问题吗?

liNames = []
while 1 == 1:
    liNames += [raw_input("Tell me a name. Type DONE(all caps) if done entering:")]
    if "DONE" in liNames:
        break

del liNames[-1]

print liNames

name_file = open("names.txt","w")
line = name_file.writelines(liNames)
for line in name_file:
    print line
name_file.close()
4

3 回答 3

1

为了具体说明评论的建议,在这一行之后:

line = name_file.writelines(liNames)

插入这些新行:

name_file.close()
name_file = open("names.txt", "r") # or plain open("names.txt")

有了更多的经验,你会这样写:

with open("names.txt","w") as name_file:
    name_file.writelines(liNames)
with open("names.txt") as name_file:
    for line in name_file:
        print line

有了更多经验 ;-),您将学习如何打开文件以进行读写。但这更棘手,尤其是对于 Windows 上的文本文件。

于 2013-10-30T00:49:07.943 回答
0

解决您的错误:

你只是在写作模式下打开它,阅读它,在阅读模式下打开它:

name_file = open("names.txt", "r")

要不就:

name_file = open("names.txt")

由于python默认以读取模式打开文件。

所以步骤是:

  1. 以写入模式打开文件。
  2. 写给它。
  3. 关闭它。

之后,读取文件:

  1. 以阅读模式重新打开它。
  2. 阅读。
  3. 关闭它。

简而言之,像这样:

name_file = open("names.txt","w")
line = name_file.writelines(liNames)
name_file.close()
name_file = open("names.txt")

for line in name_file:
    print line
name_file.close()

为了让事情看起来更整洁,使用with语句(它会自动关闭文件)

像这样:

with open('names.txt', 'w') as file_name:
    line = name_file.writelines(liNames)

with open('names.txt', 'r') as file_name:
    for line in name_file:
        print line    
于 2013-10-30T00:49:45.143 回答
0

正如蒂姆彼得斯所说,当您在代码中打开文件时,您打开它是为了编写。完成写入后,文件将在此模式下保持打开状态,直到您在最后一行调用“close()”。

正如所指出的,你应该这样做(一种可能的方式):

name_file = open("names.txt","w")
line = name_file.writelines(liNames)
name_file.close()

name_file = open("names.txt")
for line in name_file:
    print line
name_file.close()

另一种方法是使用with语句:

with open("nmes.txt", "w") as name_file:
    name_file.writelines(liNames)

with块完成时,这会自动关闭文件。

于 2013-10-30T00:50:08.937 回答