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)

示例文件:

Python数学建模之文件操作_第1张图片

运行结果:

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

Python数学建模之文件操作_第2张图片

例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 文件

运行结果:

Python数学建模之文件操作_第3张图片Python数学建模之文件操作_第4张图片

你可能感兴趣的:(Python数学建模,python,开发语言)