Python数学建模之文件操作

1.文件操作基本知识

1.内置函数 open()

调用格式:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

        file:要打开的文件名或路径。

        mode:打开文件的模式,默认为只读模式 'r'。其他常用的模式有 'w'(写入模式)、'a'(追加模式)、'b'(二进制模式)等。

        buffering:指定缓冲策略,默认为 -1,表示使用系统默认缓冲区大小。

        encoding:指定打开文件时的编码方式,默认为 None,表示使用系统默认编码。

        errors:指定编码错误处理方式,默认为 None,表示使用默认错误处理方式。

        newline:指定在写入文件时使用的换行符,默认为 None,表示使用系统默认换行符。

        closefd:指定是否在文件关闭后关闭底层的文件描述符,默认为 True。 opener:指定一个自定义的打开器函数或类,用于打开文件。 

文件打开模式
模式说明
r读模式(默认模式,可省略),若文件不存在则抛出异常
w写模式,若文件已存在,先清空原有内容
x写模式,创建新文件,若文件已存在,抛出异常
a追加模式,不覆盖文件中原有内容
b二进制模式(可与其它模式组合),使用时不允许指定 encoding 参数
t文本模式(默认,可省)
+读、写模式(可与其它模式组合)

2.文件对象常用方法

        open()函数正常执行时,返回一个可迭代的文件对象,通过该文件对象对文件进行读写操作。

文件对象常用方法
方法功能说明
close()把缓冲区内容写入文件,同时关闭文件,并释放文件对象
read([size])从文本文件读取 size 个字符并返回,或从二进制文件读取指定数量字节并返回,若省略 size 则表示读取所有内容
readline()从文本文件读取一行内容作为结果返回
readlines()把文本文件中每行文本作为一个字符串存入列表并返回
seek(offset[,whence])把文件指针移动到指定位置,offset 表示相对于 whence 的偏移量,whence 为 0 表示从头开始计算(默认),1 表示从当前位置开始计算,2 表示从文件尾开始计算
tell()返回文件指针的当前位置
write(s)把字符串 s 的内容写入文件
writelines(s)把字符串列表写入文本文件,不添加换行符

3.上下文管理语句with

        关键字with 可以自动管理资源,确保不管是否异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭。

调用格式:

with open(filename, mode, encoding) as fp:    # 通过文件对象 fp 读写文件内容

2.文本文件操作

例1:

        遍历文件 data2_2.txt 中所有行,统计每一行中字符的个数。

示例代码:

with open('data2_2.txt', encoding='utf-8') as fp:
    L1 = []
    L2 = []
    for line in fp:
        L1.append(len(line))
        L2.append(len(line.strip()))        # 去掉换行符
data = [str(num)+'\t' for num in L2]        # 转换为字符串
print(L1)
print(L2)
with open('data2_2.txt', 'w', encoding='utf-8') as fp2:
    fp2.writelines(data)

示例文件:

运行结果:

[6, 11, 16, 22, 19, 16, 17, 22, 19, 16]
[5, 10, 15, 21, 18, 15, 16, 21, 18, 15]

例2: 

        随机产生一个数据矩阵,存入具有不同分隔符格式的文本文件,再把数据提取出来。

示例代码:

import numpy as np
a = np.random.rand(6, 8)                        # 生成 6*8 的[0, 1)上均匀分布的随机数矩阵
np.savetxt("data2_43_1.txt", a)                 # 存在以制表符分隔的文本文件
np.savetxt("data2_43_2.csv", a, delimiter=',')  # 存成以逗号分隔的 CSV 文件
b = np.loadtxt("data2_43_1.txt")                # 加载空格分隔的文本文件
c = np.loadtxt("data2_43_2.csv", delimiter=',') # 加载 CSV 文件

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值