您的位置:首页 > 编程语言 > Python开发

笨方法学python16习题 【读写文件】 最详解

2017-09-17 16:31 681 查看
本习题重点:

> 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   (注意:请仔细检查!)

心得
4000


(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+方式,都会清除文件内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: