LPTHW Ex 16,imy用自己的剧本编写

时间:2016-06-23 19:39:53

标签: python-2.7

我在LPTHW中成功完成了ex16,现在我试图在我自己的脚本中复制它以更好地理解课程。我键入以下内容但shell返回:

文件“bruce.py”,第23行,in   scribble.truncate() I0Error:文件未打开以进行编写

我的脚本如下:

 from sys import argv
 script, file_name=argv
 scribble=open(file_name)

  print "Master Bruce, here is your file: %s" % file_name

  print scribble.read()

 print """

 Master Bruce, to change the contents of the file 
 simply press ENTER and type three lines:

 """

  line1=raw_input("line 1:")
  line2=raw_input("line 2:")
  line3=raw_input("line 3:")

  print "Just a few seconds Master Bruce..."

  scribble.truncate()

  scribble.write(line1,line2,line3)

  scribble.close

我的理解是该文件已在第5行打开。我也尝试过第22行的scibble.open()但是也没有用。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

  

模式最常用的值是[{1}}用于阅读[...]。如果省略 mode ,则默认为'r'

     

[...]

     

模式'r''r+''w+'打开文件进行更新(读写);请注意'a+'截断文件。

source

答案 1 :(得分:0)

这正是它所说的内容:文件未打开。你以只读模式打开它。

scribble=open(file_name)

相当于

scribble=open(file_name, "r")

您需要以读/写模式打开文件。由于您不想在开始时截断它并且不想附加到它,请使用 r +

scribble=open(file_name, "r+")

您应该查看open()here的文档。

顺便提一下,您还应该查看使用 with 关键字here打开文件,以便更清晰地处理。

with open(file_name, "r+") as scribble:
    # do things
    ...