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

运行结果:

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现数学建模Python代码,可以参考以下步骤和方法: 1. 导入所需的库和模块。通常,数学建模需要使用到一些常见的科学计算库,如numpy、scipy等。可以使用import语句导入这些库。 2. 定义问题的目标函数和约束条件。根据具体的数学建模问题,可以定义一个目标函数来描述要优化的目标,并添加一些约束条件来限制解的范围。 3. 使用合适的优化算法求解问题。根据问题的性质,选择合适的优化算法来求解。例如,对于线性规划问题,可以使用线性规划库(如scipy.optimize.linprog)来解决;对于非线性规划问题,可以使用非线性规划库(如scipy.optimize.minimize)来求解。 4. 编写计算函数和辅助函数。根据问题的需求,编写计算函数和辅助函数来实现具体的计算和操作。这些函数可以帮助进行数学计算、数据处理和结果分析等。 5. 运行代码并获取结果。将问题的数据输入到代码中,运行代码并获取结果。可以使用print语句将结果输出到控制台,或者将结果保存到文件中。 参考优秀的Python代码库和开源项目,可以学习函数设计的实践经验,提高代码的质量和效率。同时,积极参与Python社区,与其他开发者交流经验和学习资源,可以获得更多的帮助和支持。 请注意,以上只是一个简单的概述,具体的数学建模问题可能需要更复杂的代码实现。具体的实现方法和代码结构会因问题而异,需要根据具体的问题进行相应的调整和优化。可以参考一些优秀的数学建模案例和教程,以获取更详细和具体的代码实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [用 Python数学建模](https://blog.csdn.net/u012419550/article/details/104006923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python函数综合案例.md](https://download.csdn.net/download/qq_42431718/88241199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值