零基础 学 python开发 (Genius套餐A) 三十二

版权声明:Genius https://blog.csdn.net/weixin_41987706/article/details/90168333

夜光序言:

 

 

 

人既然如蚂蚁一样来到世上,忽生忽死,忽聚忽散,短短数十年里,该自在就自在吧,该潇洒就潇洒吧,各自完满自己的一段生命,这就是生存的全部意义。

 

 

 

 

正文:

6.1 写文本文件 
 
6.1.1 目标 


文件时用来存储程序或者数据的,文本文件时存储文本数据的,目标是要掌握文本文件的基本操作,能把数据写入文件并读出来。
 


6.1.2 文件概述 


所谓“文件”是指一组相关数据的有序集合,这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从文件编码的方式来看,文件可分为 ASCII 码文件和二进制码文件两种。

ASCII 文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字符,用于存放对应的 ASCII 码。

例如字符串“1234”的存储形式在磁盘上是 31H、32H、33H、34H 等4 个字符,既’1’、’2’、’3’、’4’的 ASCII 码,在 Windows 的记事本程序中输入1234 后存盘为一个文件,就可以看到该文件在磁盘中占 4 个字符,打开此文件后可以看到“1234”的字符串。ASCII 码文件可在屏幕上按字符显示, 因为各个字符对应其 ASCII,每个 ASCII 二进制数都被解释成为一个可见字符。

ASCII 文件很多,例如源程序文件就是ASCII 文件,用 DOS 命令 TYPE 可显示文件的内容。由于是按字符显示,因此能读懂 ASCII文件内容。

文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作,同时释放文件占用的资源。


6.1.3 文件的打开与关闭 
1. 打开文本文件 


文件用 fopen 函数用来打开,其调用的一般形式为:
文件对象=open(文件名,使用文件方式) 其中,“文件对象”是一个 Python 对象,open 函数是打开文件的函数,"文件名"是被打
开文件的文件名字符串。
“使用文件方式”是指文件的类型和操作要求,具体如表 6-1-1 所示。
 


2. 关闭文本文件 


打开文件操作完毕后要关闭文件释放文件资源,关闭文件操作是:
文件对象.close() 
其中“文件对象”是用 open 函数打开后返回的对象。



3. 文件操作的异常 


文件操作一般要处理异常,打开一个文件来读时文件不存在,显然会出现错误,例如:
f=open("c:\\xyz.txt","rt")
s=f.read()
f.close()
如果 c:\xyz.txt 文件不存在,那么就差出现异常。文件操作属于 I/O 操作,I/O 操作中可能因为 I/O 设备的原因有时操作不正确,因此 I/O 操作一般建议使用 try 语句捕获有可能发生的错误。程序改为:


try:
 f=open("c:\\xyz.txt","rt")
 s=f.read()
 f.close()
except:
 print("文件打开失败")


6.1.4 写文本文件 


write 函数的功能是把一个字符写入指定的文件中,函数调用的形式为:
文件对象.write(s) 
其中 s 是待写入的字符串。对于 write 函数的使用也要说明几点:
 被写入的文件可以以写、追加方式打开,用写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符从文件末开始存放,必须以追加方式打开文件。
 每写入一个字符串,文件内部位置指针向后移动到末尾,指向下一个待写入的位置。 



例 6-1-1:把一个字符串存放在文件中。 


 

try:
fobj=open("c:\\abc.txt","wt")
fobj.write("abcxyz")
fobj.close()
 except Exception as err:
 print(err)
那么 abc.txt 文件的内容是: abcxyz


例 6-1-2:打开 abc.txt 文件追加写入另外一个字符串。 


 

try:
fobj=open("c:\\abc.txt","at")
fobj.write("\nmore")
fobj.close()
 except Exception as err:
 print(err)
如果原来 abc.txt 内容是"abcxyz",那么现在变成两行:
abcxyz
more
其中在写时"\n"是换行符号,即换一行继续写"more",因此文件结果成两行。



6.1.5 【案例】学生信息存储到文件 


1、案例描述 
输入若干个学生的姓名 Name、性别 Gender、年龄 Age,把它存储到文件 students.txt 中,
每个数据项占一行。
 
2、案例分析 
如果 fobj 是文件对象,那么学生的姓名 Name、性别 Gender、年龄 Age 存储语句如下:
fobj.write(Name+"\n")
fobj.write(Gender+"\n")
fobj.write(str(Age)+"\n")
或者:
fobj.write(Name+"\n"+Gender+"\n"+str(Age)+"\n")
即输出 Name、Gender、Age 后都换行。
 
3、案例代码 
 

def getStudent(i):
 print("输入第", i, "个学生信息")
 try:
 Name = input("姓名:")
 if Name.strip() == "":
 raise Exception("无效的姓名")
 Gender = input("性别:")
 if Gender != "男" and Gender != "女":
 raise Exception("无效的性别")
 Age = input("年龄:")
 Age = float(Age)
 if Age < 18 or Age > 30:
 raise Exception("无效的年龄")
 s={}
 s["Name"]=Name
 s["Gender"]=Gender
 s["Age"]=Age
 return s
 except Exception as err:
 print(err)
 return None
i=1
try:
 fobj=open("students.txt","wt")
 while True:
 s=getStudent(i)
 if s:
 fobj.write(s["Name"] + "\n" + s["Gender"] + "\n" + str(s["Age"]) + 
"\n")
 i=i+1
 s=input("继续输入吗(Y/N)")
 if s!="Y" and s!="y":
 break
 fobj.close()
except Exception as err:
 print(err)
程序运行后从键盘输入若干学生的信息,全部保存到 students.txt 中,例如文件如下:
夜光
男
1111
女神
女
21

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/90168333