python笔记12

目录

1、文件的基本操作步骤

1.打开文件(Open File):

2.读取文件内容(Read File):

3.写入文件内容(Write to File):

4.file.seek()

5.文件复制:

6.with语句:

2、数据的组织维度

1. 一维数据:

2. 二维数据:

3. 多维数据:

3、一维数组的存储与读取

1. 使用内置的文件 I/O 方法:

存储数据:

读取数据:

2. 使用 NumPy 库:

存储数据:

读取数据:

3. 使用 Pandas 库:

存储数据:

读取数据:

4、二维数据的存储与读取

存储二维数据到文件:

从文件中读取二维数据:


1、文件的基本操作步骤

文件是计算机系统中用于存储数据的基本单位,它可以包含文本、图像、音频、视频等各种类型的信息。在Python中,进行文件操作通常涉及以下基本步骤:

1.打开文件(Open File):

在Python中,要打开一个文件,可以使用内置的open() 函数。 open()函数有多种参数,最常用的是文件名和模式。

基本的打开文件语法如下:

file = open(filename, mode)

其中:

  • filename 是文件的路径和名称。
  • mode 是打开文件的模式,它指定了你想要对文件执行的操作。常见的模式包括:
    • 'r':只读模式。默认模式,如果文件不存在会引发错误。
    • 'w':写入模式。如果文件不存在,则会创建新文件;如果文件已存在,则会清空文件内容。
    • 'a':追加模式。如果文件不存在,则会创建新文件;如果文件已存在,则在文件末尾追加内容。
    • 'r+':打开文件进行读写操作,文件必须存在。从文件开头开始读写,不会清空文件内容。如果文件不存在,则会引发 错误。
    • 'w+':打开文件进行读写操作,如果文件不存在则创建新文件。会清空文件内容。如果文件已存在,则会从头开始写入,并覆盖原有内容。
    • 'a+'打开文件进行读写操作,如果文件不存在则创建新文件。从文件末尾开始追加内容,不会清空文件内容。文件指针位于文件末尾,即写入操作会在文件末尾添加内容。
    • 'b':二进制模式。用于处理二进制文件,例如图像或视频文件。'rb'(读取二进制)或'wb'(写入二进制)

2.读取文件内容(Read File):

在Python中,要读取文件的内容,可以使用打开文件后返回的文件对象上的不同方法来实现。以下是几种常用的方法:

1.使用 read()方法读取整个文件内容:

# 打开文件
file = open('example.txt', 'r')# 读取整个文件内容
content = file.read()# 打印文件内容
print(content)# 关闭文件
file.close()

2.使用 readline()方法逐行读取文件内容:

# 打开文件
file = open('example.txt', 'r')# 逐行读取文件内容
line = file.readline()
while line:print(line, end='')  # 去除每行末尾的换行符line = file.readline()# 关闭文件
file.close()

3.使用readlines() 方法将文件内容读取为列表:

# 打开文件
file = open('example.txt', 'r')# 将文件内容读取为列表
lines = file.readlines()# 打印文件内容
for line in lines:print(line, end='')  # 去除每行末尾的换行符# 关闭文件
file.close()

3.写入文件内容(Write to File):

在Python中,除了使用write() 方法逐个写入数据外,还可以使用writelines() 方法将一个字符串列表写入文件。下面是它们的简要说明和示例用法:

1.方法:write()

write() 方法用于向文件中写入一个字符串。如果文件已存在,写入的内容会覆盖原有内容;如果文件不存在,则会创建新文件。

# 以写入模式打开文件
file = open('example.txt', 'w')# 使用write()方法写入字符串
file.write('Hello, World!\n')
file.write('This is a new line.\n')# 关闭文件
file.close()

2.方法:writelines()

writelines() 方法用于向文件中写入一个字符串列表,即将列表中的每个字符串逐行写入文件。如果文件已存在,写入的内容会覆盖原有内容;如果文件不存在,则会创建新文件。

# 字符串列表
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']# 以写入模式打开文件
with open('example.txt', 'w') as file:# 使用writelines()方法写入字符串列表file.writelines(lines)

注意事项:

  • write() 方法是将一个字符串写入文件。
  • writelines() 方法接受一个字符串列表,并将列表中的每个字符串写入文件,不会在字符串之间添加额外的换行符,需要手动添加。
  • 在使用 write()writelines() 方法写入文件时,需要确保数据的格式正确,特别是换行符等细节。
  • 在写入完数据后,务必关闭文件以确保数据被正确保存。
  • 使用写入模式'w' 时,如果文件不存在,将会创建新文件。如果文件已存在,写入操作会覆盖原有内容。
  • 如果想在文件末尾追加内容而不是覆盖原有内容,可以使用追加模式 'a'或 'a+'

这些方法都可以用于向文件中写入内容,选择使用哪种方法取决于你的具体需求以及数据的格式。

4.file.seek()

file.seek(offset, whence) 方法用于在文件中移动文件指针的位置。文件指针指示下一次读取或写入操作将从文件的哪个位置开始。这个方法的参数包括:

  • offset: 移动的字节数,可以为正数或负数。正数表示向文件末尾方向移动,负数表示向文件开头方向移动。
  • whence: 指定基准位置,可以是 0(从文件开头),1(从当前位置),或 2(从文件末尾)。

以下是file.seek() 方法的一些示例用法:

1. 从文件开头移动到指定位置:

with open('example.txt', 'r') as file:# 将文件指针移动到第10个字节的位置file.seek(10)content = file.read()print(content)

2.从当前位置向后移动:

with open('example.txt', 'r') as file:# 移动文件指针到当前位置的后5个字节file.seek(5, 1)content = file.read()print(content)

3.从文件末尾向前移动:

with open('example.txt', 'r') as file:# 移动文件指针到文件末尾前5个字节的位置file.seek(-5, 2)content = file.read()print(content)

4.在读写模式下使用 :seek()

在读写模式下,使用 seek()可以移动文件指针,并且在读取或写入之前需要确保文件指针的位置是正确的。

with open('example.txt', 'r+') as file:# 移动文件指针到文件末尾file.seek(0, 2)# 在文件末尾追加内容file.write('New content added at the end.')# 将文件指针移到文件开头以读取文件内容file.seek(0)content = file.read()print(content)

seek() 方法在文件操作中很有用,特别是在需要随机访问文件位置时。确保在使用它时小心处理文件指针的位置,以免引起意外的结果。

5.文件复制:

def copy_file(source_file, destination_file):try:# 打开源文件进行读取with open(source_file, 'rb') as source:# 读取源文件内容content = source.read()# 打开目标文件进行写入with open(destination_file, 'wb') as destination:# 将读取的内容写入目标文件destination.write(content)print(f'File "{source_file}" copied to "{destination_file}" successfully.')except FileNotFoundError:print(f'Error: File "{source_file}" not found.')except Exception as e:print(f'An error occurred: {e}')# 调用函数进行文件复制
copy_file('source.txt', 'destination.txt')

上述示例中,copy_file 函数接受两个参数:source_file 是源文件的路径,destination_file 是要复制到的目标文件的路径。

请注意以下几点:

  • 使用 'rb'和 'wb'作为文件打开模式,确保以二进制模式进行读取和写入,以防止在复制过程中对文件内容进行编码和解码。
  • 在复制大文件时,可能需要分块读取和写入,以避免一次性加载整个文件内容到内存中。

如果你只想复制文件的内容而不是文件的属性(例如权限、创建日期等),上述方法足够简单有效。如果需要更复杂的复制操作,可能需要使用特定的库,如shutil 模块中的 copy2函数。

6.with语句:

with 语句是 Python 中用于管理资源的一种语法结构,它可以确保在使用资源后正确地释放它们。常见的用法是在文件 I/O、数据库连接、网络连接等需要手动关闭的资源中。

下面是with 语句的一般语法结构:

with expression as variable:# 语句块

在这个语法中expression, 是一个表达式,它返回一个实现了上下文管理器协议(Context Manager Protocol)的对象。variable 是一个可选的变量名,用来引用上下文管理器生成的对象。

with 语句执行时,它会获取上下文管理器生成的对象,并且在进入 with代码块之前调用该对象的 __enter__方法,在退出with 代码块时调用__exit__ 方法。这样就确保了在进入和退出代码块时资源得到正确的管理和清理。

以下是一个使用 with语句处理文件 I/O 的示例:

with open('example.txt', 'r') as file:content = file.read()print(content)

在这个示例中,open('example.txt', 'r') 返回一个文件对象,它是一个实现了上下文管理器协议的对象。在 with语句中,file 文件对象被赋给变量 。当进入 with代码块时,文件对象的__enter__ 方法被调用,文件被打开并且可以进行读取操作。当退出with 代码块时,文件对象的__exit__方法被调用,文件被关闭,确保了文件资源的正确释放。

使用 with语句可以简化代码,并且确保在使用资源后正确地释放它们,因此是 Python 编程中的一种推荐的做法。

2、数据的组织维度

数据的组织维度指的是数据的结构和排列方式,这对于数据分析和处理非常重要。常见的数据组织维度包括一维数据、二维数据和多维数据。

1. 一维数据:

一维数据是最简单的数据结构,它由一组按照线性顺序排列的数据组成。一维数据通常表示为一个序列,比如列表、数组或者向量。一维数据适用于表示单一维度上的信息,例如时间序列、温度记录、股票价格等。

示例: [1, 2, 3, 4, 5]

2. 二维数据:

二维数据是由行和列组成的数据结构,通常可以看作是表格或者矩阵。二维数据用于表示具有两个维度的信息,例如学生成绩表、图像像素值矩阵等。

示例:

[[1, 2, 3],[4, 5, 6],[7, 8, 9]
]

3. 多维数据:

多维数据是具有多个维度的数据结构,它可以是三维、四维甚至更高维度的。多维数据通常用于表示复杂的数据集合,例如视频数据、立体图像数据、气象数据等。

示例: 三维数据表示为立方体,四维数据可以想象成一组立方体的集合。

数据的组织维度对于数据处理和分析至关重要,因为不同的数据结构需要不同的处理方式和工具。例如,一维数据可以使用列表或数组来处理,而二维数据通常需要使用 Pandas 数据框或 NumPy 的二维数组,多维数据可能需要使用专门的库或工具进行处理,如 TensorFlow 或 PyTorch 用于深度学习任务。

3、一维数组的存储与读取

一维数据的存储与读取通常涉及将数据写入文件或从文件中读取数据。在 Python 中,你可以使用多种方式来实现这一目标,其中包括使用内置的文件 I/O 方法、NumPy 库、Pandas 库等。下面分别介绍这些方法:

1. 使用内置的文件 I/O 方法:

存储数据:
data = [1, 2, 3, 4, 5]with open('data.txt', 'w') as file:for value in data:file.write(f'{value}\n')
读取数据:
data = []with open('data.txt', 'r') as file:for line in file:data.append(int(line.strip()))print(data)

2. 使用 NumPy 库:

存储数据:
import numpy as npdata = np.array([1, 2, 3, 4, 5])
np.savetxt('data.txt', data)
读取数据:
import numpy as npdata = np.loadtxt('data.txt')
print(data)

3. 使用 Pandas 库:

存储数据:
import pandas as pddata = pd.Series([1, 2, 3, 4, 5])
data.to_csv('data.csv', index=False)
读取数据:
import pandas as pddata = pd.read_csv('data.csv', squeeze=True)
print(data)

这些是常见的一维数据存储与读取的方法。选择哪种方法取决于你的需求和偏好。如果只是简单地存储和读取一维数据,使用内置的文件 I/O 方法是最简单的方法。如果需要处理更复杂的数据,例如多维数据或需要进行数据分析和处理,那么使用 NumPy 或 Pandas 库会更方便。

4、二维数据的存储与读取

对于文件中的二维数据,一种常见的方法是使用适当的分隔符(例如逗号、制表符等)将数据分隔为行和列,然后使用 Python 的文件读写操作以及适当的数据结构(如列表列表或Numpy数组)进行存储和读取。

下面演示如何将二维数据存储到文件中,并从文件中读取二维数据。

存储二维数据到文件:

# 定义要存储的二维数据
data = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]# 定义文件名
filename = "data.txt"# 将数据写入文件
with open(filename, 'w') as file:for row in data:row_str = '\t'.join(map(str, row))  # 使用制表符分隔列file.write(row_str + '\n')  # 写入一行数据并换行

在这个示例中,我们将二维数据写入到了名为 data.txt 的文件中。每行数据用制表符分隔(\t),并以换行符 \n 结尾。

从文件中读取二维数据:

# 定义文件名
filename = "data.txt"# 读取文件中的二维数据
data = []
with open(filename, 'r') as file:for line in file:row = list(map(int, line.strip().split('\t')))  # 使用制表符分隔每行的数据data.append(row)# 打印读取的数据
for row in data:print(row)

在这个示例中,我们从名为 data.txt 的文件中读取了二维数据。对于每一行,我们首先去除行末尾的换行符,并使用制表符 \t 分割每行的数据。然后将这些数据转换为整数,并将每一行作为一个列表添加到 data 列表中。最后,我们打印读取的数据以进行验证。

这种方法非常灵活,适用于各种类型的二维数据。可以根据数据格式和需求调整分隔符和数据结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/676598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题之旅:进阶篇(三)

力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 一、动态规划(DP) 首先,让我们来…

【QT+QGIS跨平台编译】之三十二:【MiniZip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、MiniZip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、MiniZip介绍 MiniZip是一个轻量级的开源库,用于创建、读取和操作ZIP文件格式的压缩文件。它提供了一组简单而灵活的API,可以方便地在应用程序中进行ZIP文件的压缩和解压操作。 MiniZip的主要特…

《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(10)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(9) 4.2 PCIe体系结构的组成部件 PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备&…

【机器学习】基于集成学习的 Amazon 用户评论质量预测

实验六: 基于集成学习的 Amazon 用户评论质量预测 1 案例简介 ​ 随着电商平台的兴起,以及疫情的持续影响,线上购物在我们的日常生活中扮演着越来越重要的角色。在进行线上商品挑选时,评论往往是我们十分关注的一个方面。然而目前电商网站的…

Golang的for循环变量和goroutine的陷阱,1.22版本的更新

先来看一段golang 1.22版本之前的for循环的代码 package mainimport "fmt"func main() {done : make(chan bool)values : []string{"chen", "hai", "feng"}for _, v : range values {fmt.Println("start")go func() {fmt.P…

【05】C++ 内存管理

文章目录 🌈 Ⅰ C 内存分布🌈 Ⅱ C 内存管理方式1. new 和 delete 操作内置类型2. new 和 delete 操作自定义类型 🌈 Ⅲ operator new 和 operator delete🌈 Ⅳ new 和 delete 的实现原理1. 内置数据类型2. 自定义数据类型 &#…

过渡效果的艺术:CSS transition 让网页交互更平滑(下)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

使用人工智能将扫描地图中的数据数字化

Bunting Labs 推出了新版本QGIS AI 地图追踪插件,这是一款由人工智能驱动的自动数字化扫描地图和平面图特征的工具。Egan 和联合创始人 Brendan Ashworth 开发了这个插件,以快速加快从扫描地图和平面图中提取地理特征的过程。 通常,从 PDF 中…

飞天使-linux操作的一些技巧与知识点9-zabbix6.0 容器之纸飞机告警设置

文章目录 zabbix 告警纸飞机方式webhook 方式 zabbix 告警纸飞机方式 第一种方式参考 https://blog.csdn.net/yetugeng/article/details/99682432bash-4.4$ cat telegram.sh #!/bin/bashMSG$1TOKEN"61231432278:AAsdfsdfsdfsdHUxBwPSINc2kfOGhVik" CHAT_ID-41dsdde…

Rust方法自动解引用测试,总结和补充

// 定义一个结构体MyBox&#xff0c;包含一个原始指针 struct MyBox<T>(T);// 方法调用 . 操作&#xff0c;对方法的self 进行加& &mut * 还有 无大小转换 trait MyTrait {fn test0(mut self, x: &i32) where Self: Sized {println!("test0 :{}", …

PyTorch: torch.max()函数详解

torch.max函数详解&#xff1a;基于PyTorch的深入探索 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;torch.max()函数简介&#x1f333;&#x1f333;torch.max()的返回值&#x1f333;&#x1f333;torch.max()的应用示例&#x1f333;&am…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(下篇)——Findings论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

Leetcode2786. 访问数组中的位置使分数最大

Every day a Leetcode 题目来源&#xff1a;2786. 访问数组中的位置使分数最大 解法1&#xff1a;动态规划 状态数组&#xff1a; dp[i][0]: 访问下标范围 [0, i] 中的元素且最后访问的元素是偶数时的最大得分&#xff1b;dp[i][1]: 访问下标范围 [0, i] 中的元素且最后访问…

html5+css3胶囊按钮代码

效果 代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title></title> <style> /* 胶囊开关的样式 */ .switch { position: relative; display: inline-block; width: 6…

EasyExcel操作Excel表格

一、EasyExcel介绍 1.1 介绍 EasyExcel 是一个基于 Java 的简单易用的 Excel 文件读写工具&#xff0c;它提供了一种简单而又高效的方式来读取、写入和操作 Excel 文件。EasyExcel 是阿里巴巴开源的项目&#xff0c;它旨在简化开发人员处理 Excel 文件的流程&#xff0c;使得…

Elasticsearch中的动态DSL解决方案

目录 问题背景 解决方案 编写es的mapper 动态dsl编写 使用mapper获取动态dsl 远程调用restful api查询 问题背景 在大数据量的业务系统中&#xff0c;一般都会引入Elasticsearch来作为搜索引擎&#xff0c;而搜索的条件又是多种多样的。回顾下&#xff0c;如果是mysql等…

API网关架构设计与实现的经验总结与实践

API网关是现代微服务架构中的重要组件&#xff0c;它充当了前端和后端微服务之间的中介。本文将介绍API网关的架构设计原则和实现方法&#xff0c;以帮助开发人员更好地理解和应用这些技术。 1. 什么是API网关&#xff1f; - 解释了API网关的基本概念和作用&#xff0c;以及…

【Spring框架】Spring事务的原理

目录 〇、对类或方法的Spring事务属性进行解析 0.1 解析标签 0.2 注册 InfrastructureAdvisorAutoProxyCreator 0.3 判断目标方法是否适合 canApply 0.4 匹配标签 match 0.5 小结 一、Spring事务的实现 1.1 准备事务 1.1.1 收集Transactional注解属性信息&#xff0c;…

美创科技与河南金融信创生态实验室签署战略合作协议

2024年1月31日&#xff0c;由普惠通科技与河南省科学院物理所、北京交通大学、中国金融电子化集团重庆金融认证中心联合发起成立中部地区第一家金融信创生态实验室运营公司&#xff08;即河南豫科普惠通信创科技有限公司&#xff09;与杭州美创科技股份有限公司战略合作签约仪式…

探索Xposed框架:个性定制你的Android体验

探索Xposed框架&#xff1a;个性定制你的Android体验 1. 引言 在当今移动设备市场中&#xff0c;Android系统作为最受欢迎的操作系统之一&#xff0c;其开放性和可定制性备受用户青睐。用户希望能够根据个人喜好和需求对其设备进行定制&#xff0c;以获得更符合自己习惯的使用…