【Python基础No.3】

14.读写文件

14.1读文件
文件名可以用文件的完整路径,也可以是相对路径。因为我们把要读取的文件和代码放在了同一个文件夹下,所以只需要写它的文件名就够了

f = open('data.txt')

但这一步只是打开了一个文件,并没有得到其中的内容。变量f保存了这个文件,还需要去读取它的内容。你可以通过read()函数把文件内所有内容读进一个字符串中。

data = f.read()

完整程序示例:

f = open('data.txt')
data = f.read()
print (data)
f.close()

读取文件内容的方法还有:

readline() #读取一行内容
readlines() #把内容按行读取至一个list中

14.2写文件

f = open('output.txt', 'w')

'w’就是writing,以这种模式打开文件,原来文件中的内容会被你新写入的内容覆盖掉,如果文件不存在,会自动创建文件。

之前不加参数时,open的模式默认为’r’,reading,只读模式,文件必须存在,否则引发异常。

另外还有一种常用模式是’a’,appending。它也是一种写入模式,但你写入的内容不会覆盖之前的内容,而是添加到原有文件内容后面。
write的参数可以是一个字符串,或者一个字符串变量。

data = 'I will be in a file.\nSo cool!'
out = open('output.txt', 'w')
out.write(data)
out.close()

15 文件处理


with open('abc.txt','r',encoding='utf-8') as f:         #第1步:读取文件
    lines = f.readlines()                               #第2步:readlines按行读取
    # print(lines)

results = []
for line in lines:                                      #第3步:遍历所有行,按照空格,把姓名、
														#每次的成绩分割开
    data = line.split()
    # print(data)

    sum = 0
    score_list = data[1:]                               #第4步:对于每一条数据,都新建一个字符串,把
    													#学生的名字和算好的总成绩保存进去,
                                                        # 最后再把这些字符串一起保存到文件中
    for score in score_list:
        sum+=int(score)
    result= '%s\t:%d\n'%(data[0],sum)

    results.append(result)                              #第5步:得到一个学生的总成绩后,把它添加到一个
    													#list中
# print(results)
out = open('result.txt','w',encoding='utf-8')           #第6步:全部成绩处理完毕后,把results中的内容
														#保存至文件。因为results是一个字符串组成的list,
														#这里我们直接用writelines方法
out.writelines(results)
out.close()


  1. 先把文件读进来,在这里,由于有中文字符,因此需要对字符进行编码,以免出现报错。
  2. 取得文件中的数据。因为每一行都是一条学生成绩的记录,所以用readlines,把每一行分开,便于之后的数据处理
  3. 对每一条数据进行处理。按照空格,把姓名、每次的成绩分割开
  4. 整个程序最核心的部分到了。如何把一个学生的几次成绩合并,并保存起来呢?我的做法是:对于每一条数据,都新建一个字符串,把学生的名字和算好的总成绩保存进去。最后再把这些字符串一起保存到文件中
  5. 得到一个学生的总成绩后,把它添加到一个list中
  6. 最后,全部成绩处理完毕后,把results中的内容保存至文件。因为results是一个字符串组成的list,这里我们直接用writelines方法

16.异常处理


在python中,可以使用try…except语句来处理异常。做法是,把可能引发异常的语句放在try-块中,把处理异常的语句放在except-块中

try:
   f = open('non-exist.txt')
   print ('File opened!')
   f.close()
except:
   print ('File not exists.')
print ('Done')

当程序在try内部打开文件引发异常时,会跳过try中剩下的代码,直接跳转到except中的语句处理异常。于是输出了“File not exists.”。如果文件被顺利打开,则会输出“File opened!”,而不会去执行except中的语句。
但无论如何,整个程序不会中断,最后的“Done”都会被输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值