【发布时间】:2016-07-25 16:21:24
【问题描述】:
所以,我正在练习 Zed Shaw 的 Python 书的第 16 题。
我想过在同一个文件上尝试追加和截断。我知道,这没有意义。但是,我是新手,我正在尝试了解如果我同时使用两者会发生什么。
所以,首先我以追加模式打开文件,然后截断它,然后写入它。
但是,截断在这里不起作用,我写的任何内容都会附加到文件中。
那么,有人可以解释为什么截断不起作用吗?即使我首先以附加模式打开文件,但我相信在那之后我会调用 truncate 函数,它应该可以工作!!!
以下是我的代码:
from sys import argv
script, filename = argv
print "We're going to erase %r." %filename
print "If you don't want that. hit CTRL-C (^C)."
print "If you do want that, hit RETURN."
raw_input("?")
print "Opening the file..."
target = open(filename, 'a')
print "Truncating the file. Goodbye!"
target.truncate()
print "Now I'm going to ask you for three lines."
line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")
print "I'm going to write these to the file."
target.write(line1 + "\n" + line2 + "\n" + line3)
print "And finally, we close it."
target.close()
【问题讨论】:
-
但是,我从一个空文件开始。我正在使用的文件中有数据。
-
骗子也一样。完全一样,他们在同一个教程中解决相同的问题。
-
尝试用
filename = "yourfile.txt"替换脚本中的第三行,看看它是否仍然不起作用。此代码在我运行时可以正常工作。 -
我尝试用我的文件名替换。但是,我在创建文件时收到错误“NameError: name 'ex16_sample' is not defined”。