Python学习笔记(三)IO编程

文件简介:文件是存储在外部介质上一组相关信息的集合。计算机文件分为文本文件(.txt、.py)和二进制文件(.jpg、mp3)两种

1. 文件操作

1.1. 打开文件

  • open()函数:
  • 文件对象 = open(文件说明符,[打开方式])
    • 文件说明符指定打开的文件名,可以包含完整路径(注意两种OS中的文件名的写法)
    # 下列语句中,可用于读取当前目录下的data目录中的file.txt文件的是()
    # 1、在Windows系统中:
    with open('data\\file.txt', 'r') as f:
    # 2、在Linux系统中
    with open('data/file.txt', 'r') as f:
    
    • 打开方式包含读、写、追加
打开方式说明
r打开文件读(文件不存在,报错)
w打开文件写(存在就覆盖,不存在就新建)
a打开文件追加(不存在就新建,存在就追加)
r+打开文件读写
w+打开文件读写不存在就新建,存在就覆盖
a+打开文件读写(不存在就新建,存在就追加)

1.2. 关闭文件

  • close() 可用于关闭文件
  • 文件打开后一定要关闭,关闭文件可以确保内存缓存的数据刷新到文件,打开文件太多不关闭可能会导致不能打开新的文件,导致内存的严重浪费
  • python 可以使用 try … finally,但是每次这样写太过繁琐,所以提供了自动关闭文件的写法
    • with open(文件名,打开方式) as 别名
    • 别名.文件读写函数
    with open('hello.txt', 'w') as f:
    f.write('Hello, world!')  # 覆盖
    

1.3. 读文本文件

  • read()
    • 带一个参数控制读取的字符数量
    • 参数填 0 ,表示读取整个文件
  • readline()
    • 读取一行
  • readlines()
    • 读取所有行到列表

1.4. 写文本文件

  • write()
    • 参数是字符串,将字符串写入文件
  • writelines()
    • 参数是列表,将列表中的字符串全部写入到文件

注意:
  1. 文件对象的 flush方法用于将缓冲区的内容写入文件,但是不关闭文件
  2. 写模式(‘w’)打开的文件无法进行读操作
  3. read方法的参数用于表示读取的字符个数,如果调用时该参数省略,表示读取全部字符。
  4. 以’w’模式打开文件进行写入时,write()函数传入的参数类型必须是字符串
  5. readline函数表示读取文件的下一行,返回一个字符串

2、编程练习

题目描述:有一个文本文件 Numbers.txt,文件中的每一行都是一个浮点数,编
写程序读取出所有的浮点数。要求:

1 从小到大排序,将排序后的结果写到当前路径下新生成的一个文本文件
Sort.txt 中,每个数占一行。

2 求出这些数字的均值、方差,将结果追加写到当前路径下新生成的一个文本
文件 Sort.txt 中,每个数占一行。

3 要求生成的文本文件 Sort.txt 中同时包含排序和均值、方差的结果
Numbers.txt

12.3
13.5
11.4
11.4
15.2
10.9
6.5
2.4
4.3
17.8
16.2
1.3
import math
with open('numbers.txt', 'r') as numbers:
    num = numbers.read()
    # 按回车分隔
    nums = num.split()
    result = []
    # 将结果集转换为浮点数集
    for num in nums:
        result.append(float(num))
    # 排序
    result = sorted(result)
    # 均值与方差
    avg = 0.0
    s = 0.0
    for num in result:
        avg += num
    avg = avg / len(result)
    result.append(avg)
    for num in result:
        s += math.pow(num-avg,2)
    s = avg / len(result)
    result.append(s)
    # 存入 Sort.txt
with open('Sort.txt', 'a') as Sort:
    for num in result:
        Sort.write(str(num))
        Sort.write('\n')

参考文档:https://www.icourse163.org/learn/SUDA-1206947804?tid=1450431473&from=study#/learn/content?type=detail&id=1214940648&cid=1219118256

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值