习题 16: 读写文件
close – 关闭文件。
read – 读取文件内容。你可以把结果赋给一个变量。
readline – 读取文本文件中的一行。
truncate – 清空文件,请小心使用该命令。
write(stuff) – 将 stuff 写入文件。
在文本编辑器中,编辑以下内容并保存到ex16.py文件中,同时在终端中运行该文件:
##-- coding: utf-8 --
#将Python的功能(其实叫模组modules)引入到脚本中
#argv就是所谓的”参数变量“,这个变量包含了你传递给Python的参数
from sys import argv
#将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..."
#open用于打开一个文件,创建一个 file 对象,之后通过相关的方法才可以调用它进行读写
target = open(filename, 'w')
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)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
print "And finally, we close it."
target.close()
执行结果
$ python ex16.py python ex16.py test.txt
We're going to erase 'ex15_sample.txt'.
If you don't want that, hit CTRL-C(^C).
If you do want that, hit RETURN.
? #键入CTRL-C的话就会跳出并提示KeyboardInterrupt
Opening the file...
Truncating the file. Goodbye!
Now I'm going to ask you for three lines.
line 1:11111111
line 2:22222222
line 3:33333333
I'm going to write these to the file.
And finally, we close it.
test.txt文件中的内容变成:
11111111
22222222
33333333
加分习题
- 如果你觉得自己没有弄懂的话,用我们的老办法,在每一行之前加上注解,为自己 理清思路。就算不能理清思路,你也可以知道自己究竟具体哪里没弄明白。
- 写一个和上一个练习类似的脚本,使用 read 和 argv 读取你刚才新建的文件。
from sys import argv
script, filename = argv
target = open(filename)
text = target.read()
print text
target.close()
执行结果:
$ python ex16.py test.txt
11111111
22222222
33333333
- 文件中重复的地方太多了。试着用一个 target.write() 将 line1, line2, line3 打印出来,你可以使用字符串、
格式化字符、以及转义字符。
#第一种
target.write(line1+'\n'+line2+'\n'+line3+'\n')
#第二种
target.write("%s\n%s\n%s\n" % (line1, line2, line3))
- 找出为什么我们需要给 open 多赋予一个 'w' 参数。提示: open 对于文件的写入操作态度是安全第一,所以你只有特别指定以后,它才会进行写入操作。
因为open()默认是'r',即读取文本模式,不能进行写入; 所以需要指定写入模式, 用到参数w。
此外, 'a' 表示追加(append),写入的时候不会清楚文件中原有的数据。