Python 学习 第二册 第11章 文件

news/2024/7/3 0:11:53

----用教授的方式学习

目录

11.1 打开文件

11.2 文件的基本方法

11.2.1 读取和写入

11.2.2 使用管道重定向输出

11.2.3 读取和写入行

11.2.4 关闭文件

11.3 迭代文件内容

11.3.1 每次一个字符(或字节)

11.3.2 每次一行

11.3.3 读取所有内容

11.3.4 使用 fileinput 实现延迟行迭代

11.3.5 文件迭代器


11.1 打开文件

要打开文件,可使用函数open,它位于自动导入的模块io中。则可像下面这样打开它:

>>> f = open('somefile.txt')

函数open的参数mode的可能取值有多个,如下:

值 

描 述

'r' 

读取模式(默认值)

'w' 

写入模式

'x' 

独占写入模式

'a' 

附加模式

'b' 

二进制模式(与其他模式结合使用)

't' 

文本模式(默认值,与其他模式结合使用)

'+' 

读写模式(与其他模式结合使用)

11.2 文件的基本方法

11.2.1 读取和写入

可使用f.write来写入数据,还可使用f.read来读取数据。

>>> f = open('somefile.txt', 'w') 

>>> f.write('Hello, ') 

>>> f.write('World!') 

>>> f.close()

>>> f = open('somefile.txt', 'r') 

>>> f.read(4) 

'Hell' 

>>> f.read() 

'o, World!' 

11.2.2 使用管道重定向输出

在bash等shell中,可依次输入多个命令,并使用管道将它们链接起来,如下所示:

$ cat somefile.txt | python somescript.py | sort 

# somescript.py 
import sys 
text = sys.stdin.read() 
words = text.split() 
wordcount = len(words) 
print('Wordcount:', wordcount) 

11.2.3 读取和写入行

要读取一行(从当前位置到下一个分行符的文本),可使用方法readline。

如:some_file. readline()返回的是'Hello, World!\n'。

11.2.4 关闭文件

调用方法close将文件关闭。

# 在这里打开文件
try: 
    # 将数据写入到文件中
finally: 
    file.close()

11.3 迭代文件内容

本节的所有示例中,我都将使用一个名为process的虚构函数来表示对每个字符或行所做的处理,你可以用自己的喜欢的方式实现这个函数。

def process(string): 
    print('Processing:', string)

11.3.1 每次一个字符(或字节)

with open(filename) as f: 
    char = f.read(1) 
    while char: 
        process(char) 
        char = f.read(1)

以不同的方式编写循环

with open(filename) as f: 
     while True:
        char = f.read(1) 
        if not char: break 
        process(char)

11.3.2 每次一行

with open(filename) as f: 
    while True: 
        line = f.readline() 
        if not line: break 
        process(line)

11.3.3 读取所有内容

使用read迭代字符

with open(filename) as f: 
     for char in f.read(): 
         process(char)

使用readlines迭代行

with open(filename) as f: 
     for line in f.readlines(): 
         process(line)

11.3.4 使用 fileinput 实现延迟行迭代

使用fileinput迭代行

import fileinput 
     for line in fileinput.input(filename): 
         process(line)

11.3.5 文件迭代器

迭代文件

with open(filename) as f: 
    for line in f: 
      process(line)

sys.stdin也是可迭代的,因此要迭代标准输入中的所有行,可像下面这样做:

import sys 
    for line in sys.stdin: 
        process(line)

>>> f = open('somefile.txt', 'w') 

>>> print('First', 'line', file=f) 

>>> print('Second', 'line', file=f) 

>>> print('Third', 'and final', 'line', file=f) 

>>> f.close() 

>>> lines = list(open('somefile.txt')) 

>>> lines 

['First line\n', 'Second line\n', 'Third and final line\n'] 

>>> first, second, third = open('somefile.txt') 

>>> first 

'First line\n' 

>>> second 

'Second line\n' 

>>> third 

'Third and final line\n'

---end


http://lihuaxi.xjx100.cn/news/2215574.html

相关文章

python flask配置邮箱发送功能,使用flask_mail模块

🌈所属专栏:【Flask】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点…

Mac vscode could not import github.com/gin-gonic/gin

问题背景: 第一次导入一个go的项目就报红 问题分析: 其实就是之前没有下载和导入gin这个web框架包 gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。 问题解决: 依次输入以下命令。通…

【Echarts系列】水平柱状图

【Echarts系列】水平柱状图 序示例数据格式代码 序 为了节省后续开发学习成本,这个系列将记录我工作所用到的一些echarts图表。 示例 水平柱状图如图所示: 数据格式 data [{name: 于洪区,value: 2736},{name: 新民市,value: 2844},{name: 皇姑区,…

通俗范畴论2 有向图与准范畴

退一步海阔天空,在正式进入范畴论之前,我们可以重新审视一下我们是如何认识世界的,有了这个对人类认识世界过程的底层理解,可以帮助我们更好地理解范畴论。 对于人类认识世界,最神奇的一点就是这个世界居然是可以认识…

20.1 JSON-JSON接口以及在Go语言中使用JSON

1. 简介 JSON即JavaScript对象表示法(JavaScript Object Notation),是一种用于存储和交换数据的格式,是一种可供人类阅读和理解的纯文本格式。 JSON既可以键值对的形式,也可以数组的形式,表示数据。 JSON最初是JavaScript的一个…

【数据结构】初识集合深入剖析顺序表(Arraylist)

【数据结构】初识集合&深入剖析顺序表(Arraylist) 集合体系结构集合的遍历迭代器增强for遍历lambda表达式 List接口中的增删查改List的5种遍历ArrayList详解ArrayList的创建ArrayList的增删查改ArrayList的遍历ArrayList的底层原理 🚀所属…

在Python中实现排序算法:以冒泡排序和快速排序为例

在Python中实现排序算法,如冒泡排序和快速排序,是算法和数据结构学习中的基础内容。下面我将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面进行详细描述。 一、技术难点 冒泡排序: 双重循环:冒泡排序需要两层循环&…

算法分析与设计(持续更新……)

📚不进🧠 一、入门 📙 时间复杂度 ✨ 排序的时间复杂度 📙 算法伪码 📙 函数的渐近界 ✨ 渐近上界大O 👨‍🏫 笛霸格 教程视频 ✨ 渐近下界 Ω 👨‍🏫 笛霸格 教…