IOError:文件未打开以读取python

IOError:文件未打开以读取python,python,file,io,Python,File,Io,这就是我到目前为止所拥有的,我所尝试的一切都表明文件未打开?有什么基本的方法可以解决这个问题吗 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("

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

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()

具体来说,在这一行之后,评论建议:

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上的文本文件来说尤其棘手。

具体来说,在这一行之后:

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上的文本文件尤其棘手。

解决您的错误:

您只能在写入模式下打开,要阅读,请在读取模式下打开:

name_file = open("names.txt", "r")
或者只是:

name_file = open("names.txt")
因为python默认以读取模式打开文件

因此,这些步骤是:

  • 以写模式打开文件
  • 写信给它
  • 关上它
  • 之后,要读取文件,请执行以下操作:

  • 在读取模式下重新打开它
  • 读一下
  • 关上它
  • 简而言之,就是这样:

    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    
    
    解决您的错误:

    您只能在写入模式下打开,要阅读,请在读取模式下打开:

    name_file = open("names.txt", "r")
    
    或者只是:

    name_file = open("names.txt")
    
    因为python默认以读取模式打开文件

    因此,这些步骤是:

  • 以写模式打开文件
  • 写信给它
  • 关上它
  • 之后,要读取文件,请执行以下操作:

  • 在读取模式下重新打开它
  • 读一下
  • 关上它
  • 简而言之,就是这样:

    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    
    

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

    如前所述,您应该这样做(一种可能的方法):

    另一种方法是将
    语句一起使用:

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

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

    正如Tim Peters所说,当您在代码中打开文件时,您打开它进行写入。完成写入后,文件将在此模式下保持打开状态,直到在最后一行中调用“close()”

    如前所述,您应该这样做(一种可能的方法):

    另一种方法是将
    语句一起使用:

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

    这将在带的
    块完成时自动关闭文件。

    尝试打开文件;-)我想你忘了发代码了……很抱歉,你第一次打开这个文件来写(
    “w”
    )。无法从为写入而打开的文件中读取。写入文件后将其关闭,然后再次打开以进行读取(
    “r”
    ,或者忽略文件模式参数-默认为读取)。@zybjtu,除非他们也学会了如何
    seek()
    。初学者最好先关闭文件,然后再打开。请尝试打开文件;-)我想你忘了发代码了……很抱歉,你第一次打开这个文件来写(
    “w”
    )。无法从为写入而打开的文件中读取。写入文件后将其关闭,然后再次打开以进行读取(
    “r”
    ,或者忽略文件模式参数-默认为读取)。@zybjtu,除非他们也学会了如何
    seek()
    。初学者最好先关闭文件,然后再打开。