本习题重点:
> close——关闭文件。跟编辑器Notepad的“文件”→“保存”是一个意思
> read——读取文件内容。你可以把结果赋给一个变量
>readline——读取文本文件中的一行 (暂时研究中,以后会单独推出来写的)
>truncate——清空文件,请小心使用该命令
>write(stuff)——将stuff写入文件
习题代码
# -*- coding: utf-8 -*- #能到习题16的都已经知道了吧?
from sys import argv #impori语句
script, filename = argv #将argv解包,然后将值依次赋于左边的的值,(注:不能讲script丢掉,然后后面的参数随你改)
print "We're going to erase %r." % filename #打印从argv解包解出的变量filename,%r大家都应该知道
print "If you don't want that, hit CTRL-C (^C)." #打印,后面的“CTRL-C(^C)”不要管
print "If you do want that, hit RETURN." #打印
raw_input("?") #raw_input指令让用户输入值,(里面是给用户的提示)
print "Opening the 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: ") #让用户输入值然后赋给变量line1
line2 = raw_input("line 2: ") #让用户输入值然后赋给变量line2
line3 = raw_input("line 3: ") #让用户输入值然后赋给变量line3
print "I'm going to write these to the file." #打印 I‘m going to write these to the file."
target.write(line1) #将用户已赋入值的变量line1读写进text.txt文件
target.write("\n") #换行符"\n",避免一行重复
target.write(line2) #用户已赋入值的变量line2读写进text.txt文件
target.write("\n") #换行符"\n",避免一行重复
target.write(line3) 用户已赋入值的变量line3读写进text.txt文件
target.write("\n") #换行符"\n",避免一行重复
print "And finally, we close it." #打印And finally, we close it
target.close() #将刚刚输入的字符串都保存在text.txt文件里
错误:
(1) line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
少了变量“line3” 以致后面第29,30行出错
(2) target写成了targtr (注意:请仔细检查!)
心得:
(1) 在编写完这段代码后用Nopetad+++创建出一个.txt文件,然后在Power shell(我是windows 7系统,其他的我就不知道了)然后退出,你已经处于python环境了!然后输入 “python ex16.py test.txt” 便可进入脚本了
(2) line的意思便是行,后头1,2,3便是行数,它的意思是让用户输入值(值也是字符串)然后读写(读写命令为“target.write”)进text.txt文件相对应的行数(因为前面已经说了,.txt文件便是文本)
附加练习:
(1) 如果没弄清楚每行加上注释 (我没加,因为我有的地方也没搞懂)
(2) 写一段遇上一个习题类似的脚本,使用read和argv(解包)读取你刚才创建的新文件(新文件便是你的text.txt文件)
练习代码
from sys import argv
script, filename = argv
txt = open(filename)
print "Here's your file %s:" % filename
print txt.read()
print "Type the filename again:"
file_again = raw_input("> ")
txt_again = open(file_again)
print txt_again.read()
注:这可不是往文件里输入字符串了,而是改成读写文件了file_again = raw_input("> ")
txt_again = open(file_again)
print txt_again.read()
这3句代码使关键,第一句file_again = raw_input("> ") #让用户输入文件名,随后给赋变量file_again
第二句txt_again = open(file_again) #意思是txt_again打开变量file_again 所被用户给赋的文件名
第三句print txt_again.read() #意思是打印xt_again,也意味着它要开始打印你所创建的文本里的字符串了,.read()的意思便是读取文件内容你可以把结果给赋一个变量
运行练习(2)方法
注意:已经完成习题16
你已经有了text.txt文件了,所以你只需在在power Shell里输入“python one7.py(你脚本的名字) text.txt(刚才习题16需要创建的文本) ” 然后便有了你刚才输入的文本了
练习(3)文件中重复的地方太多了。试着用一个target.write()将line1,line2,line3打印出来,你可以使用字符串,格式化字符与转义字符
lines = "%s\n%s\n%s\n" % (line1, line2, line3)
target.write(lines)
应该不用讲解吧?
练习(4)找出为什么我们需要给open多赋予一个‘w’参数。提示:open对于文件的写入操作态度是安全第一,所以只有特别指定以后会,它才会进行写入操作。
练习(5)如果你用‘w’模式打开文件,那么你是不是还要target.truncate()呢?阅读以下python的open函数的文档找找答案
自己的见解:不用,不管是w方式还是w+方式,都会清除文件内容。