《Python开发之语言基础》第六集:操作文件

目录

简介

1.文件

2.操作文件

1.打开文件

(1.)打开模式

(2.)open函数的复合写法open函数的复合写法)

2.读取文件

(1.)read()方法:

(2.)readline()方法:

(3.)readlines()方法:

(4.)for循环遍历

3.写入文件

(1.)write()方法

[(2.) writelines()方法](#(2.) writelines()方法)

3.文件的读取位置和路径

1.调整文件的读取位置

2.绝对路径与相对路径

4.csv文件

简介

在 Python 编程的世界里,数据的存储与读取是至关重要的环节,而文件操作正是实现这一环节的核心技能。无论是处理文本数据、保存程序运行结果,还是读取配置信息,都离不开对文件的灵活操作。通过本节课的学习,你将掌握 Python 文件操作的核心技巧,能够轻松地与各种文件进行交互,为后续处理更复杂的数据打下坚实的基础。

1.文件

一个文件由3部分组成,分别是文件的保存路径、文件类型、文件的内容。而计算机本质上只能处理0和1组成的二进制数字,使用编码技术(密码本)将内容翻译成0和1存入。计算机中有许多可用编码: UTF-8、 GBK、 Big5 等 不同的编码,将内容翻译成二进制也是不同的。UTF-8是目前全球通用的编码格式 除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。一般文件里面有中文就使用UTF-8,如果是全英文就使用GBK进行编码。

2.操作文件

文件的操作同城包含3个步骤,即打开文件、操作文件、关闭文件。

1.打开文件

Python中通常使用open()函数来打开一个文件,其使用形式如下:

java 复制代码
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,
closefd=Ture,opener=None)

功能:打开一个文件。这里的打开文件与在操作系统中打开文件的概念不同,这里的打开文件是与文件建立通道并获取操作文件的权限。

参数'file':需要打开的文件路径(包含路径和完整文件夹名),其数据类型为字符串类型。

参数'mode':指明文件打开的模式

参数'encoding':编码格式,推荐使用UTF-8,encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定

这里主要介绍这三个参数,其他参数一般直接默认就行,open函数给定上面三个参数就足够了

(1.)打开模式

打开模式也就是mode的参数,具有三种基本访问方式r、w、a三种

|--------|-------------------------------------------------------------|
| 模式 | 描述 |
| r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
| w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。 |
| a | 打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
| b | 二进制模式,可放在r/w等模式后面,如(wb:二进制覆盖写模式) |

r只读模式

java 复制代码
f = open('E:\书代码\第7章\n.txt','r')
print(f)

w覆盖写模式

java 复制代码
for i in range(1,11):
    path = r'D:\Pthon Project\代码\代码\第7章'+str(i)+'.txt'
    f = open(path,'w')
    f.close()

循环十次就会创建十个txt文件如图所示

a追加模式

java 复制代码
f = open(r'D:\Pthon Project\代码\代码\\第7章\a.txt', 'a', encoding = 'utf-8')
f.write('提高办公效率')
f.close()

对a文件追加写,运行前a文件内容如下图1所示,执行代码可以看出写入了"提高办公效率",结果发现写在了a文件的后面

对于这三种基础模式,还有两个可能会遇到的模式,一个是"x"创建写模式,一个是"+"增加模式

"x"创建写模式会创建一个新文件并给定新文件写入权限。

+"增加模式此模式需要与'r'w'x'a'模式中的一种结合使用,表示在原有模式基础上增加读写权限

(2.) open函数的复合写法

open()函数还有一种复合写法,可以避免用户因忘记使用clo se)方法关闭文件而导致的程序异常等问题。open()函数的复合写法其使用形式如下:

java 复制代码
with open(参数) as 变量名:

with:是Python中的保留字,是一种上下文管理器 ,可以自动管理文件,无须再使用close()方法来进行文件的关闭操作。

as:是Python中的保留字,与with结合使用。

open()函数的使用形式与之前介绍的一致。变量名即文件打开后的赋值变量名,与以上示例代码中变量f的含义相同,需要注意的是,在复合写法的最后有一个":"且对文件进行操作的代码都需要缩进(缩进要求与)含义相同。

2.读取文件

读取文件内容前需要确定文件的打开模式是否为只读模式(r),如果是则可以使用文件对象中的read()、readline()、readlines()方法读取文件内的信息。

(1.)read()方法:
java 复制代码
文件对象.read(size=-1)

参数size:表示要从文件中读取的数据的长度(单位是字节),如果没有传入size,那么就表示读取文件中所有的数据。

代码1

java 复制代码
f = open('D:\Pthon Project\代码\代码\第7章\编程语言概述.txt','r',encoding='utf-8')
print(f.read())
f.close()

read中没有参数,对文件读取全部数据,运行结果如下:

java 复制代码
由于计算机不能识别人类语言,因此用户(人)与计算机交互的过程往往是通过程序的操作来实现的。
程序是计算机理解用户操作意图的途径,而程序是由编程语言来编写实现的,即使用编程语言规范地编写代码以实现特定的功能,让计算机按照代码来执行相应的操作。因此编程语言是人与计算机相互沟通的基础。

代码2

java 复制代码
f = open(r'D:\Pthon Project\代码\代码\第7章\编程语言概述.txt','r',encoding='utf-8')
a = f.read(10)   #从文件中读取size个字符的内容
print(a,type(a))
f.close()

read里面传入一个10,就是读取文件的前10个字符,然后输出读取的10个字符是什么类型的数据,结果如下:

java 复制代码
由于计算机不能识别人 <class 'str'>
(2.)readline()方法:

readline()使用形式:

java 复制代码
readline(size=-1)

参数size:默认从文件一次读取一行内容,如果size为其他值,则读取该行前size个字符。

java 复制代码
f = open(r'D:\Pthon Project\代码\代码\第7章\编程语言概述.txt', 'r', encoding='utf-8')
print(f.readline())
f.close()
#运行结果:由于计算机不能识别人类语言,因此用户(人)与计算机交互的过程往往是通过程序的操作来实现的。
(3.)readlines()方法:

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。使用形式:

java 复制代码
readlines(hint=-1)

参数hint:获取所在行内容的hint个字符,如果第一行有5个字符,hint=5,就只读去第一行内容。第2行如果有5个字符, hint=6,会读取第1行和第2行内容(5<hint≤11时会读取前两行内容)。

java 复制代码
f = open(r'D:\Pthon Project\代码\代码\第7章\编程语言概述.txt','r',encoding='utf-8')
print(f.readlines())    #从文件中读取所有内容,以列表返回,每行为列表中的一个元素
f.close()
# 运行结果为:['由于计算机不能识别人类语言,因此用户(人)与计算机交互的过程往往是通过程序的操作来实现的。\n', 
# '程序是计算机理解用户操作意图的途径,而程序是由编程语言来编写实现的,即使用编程语言规范地编写代码以实现特定的功能,让计算机按照代码来执行相应的操作。因此编程语言是人与计算机相互沟通的基础。\n']
(4.)for循环遍历

读取文件内容还可以通过for循环遍历发方式来实现

java 复制代码
f = open(r'D:\Pthon Project\代码\代码\第7章\编程语言概述.txt','r',encoding='utf-8')
for line in f:    #遍历文件
    print(line)
f.close()

运行结果为:

java 复制代码
由于计算机不能识别人类语言,因此用户(人)与计算机交互的过程往往是通过程序的操作来实现的。

程序是计算机理解用户操作意图的途径,而程序是由编程语言来编写实现的,即使用编程语言规范地编写代码以实现特定的功能,让计算机按照代码来执行相应的操作。因此编程语言是人与计算机相互沟通的基础

3.写入文件

写入文件的方法有write(参数)和writelines(参数)

(1.) write()方法

write()方法的使用形式:

java 复制代码
write(text)

把字符串text写入文件,返回值是写入的字符串数(字符串的长度)

java 复制代码
f = open(r'D:\Pthon Project\代码\代码\第7章\编程语言概述.txt','w',encoding='utf-8')
print(f.write('我正在学习Python'))
f.close()
#运行结果为:11

文件内容:

(2.)writelines()方法

writelines()方法的使用形式为:

java 复制代码
writelines(lines)

把字符串列表(列表中元素均为字符串)写入文件,且不添加换行符。参数lines 表示字符串列表,返回值为None表示空

java 复制代码
f = open(r'D:\Pthon Project\代码\代码\第7章\编程语言概述.txt','w',encoding='utf-8')
ls = ['zhangsan','lisi','wangwu']
print(f.writelines(ls))
f.close()
#运行结果为None

3.文件的读取位置和路径

1.调整文件的读取位置

当读取到文件末尾,需要跳转到文件开头重新读取时,或当写入到文件末尾,需要重新在文件开头写入内容时可以使用seek()方法。

java 复制代码
seek(cookie,whence=0)

功能:把文件指针移到新的位置上

参数cookie:表示相对于whence位置的偏移量,如果为正数表示向右偏移,如果是负数表示向左偏移一个汉字的偏移量是3。

参数whence:表示文件指针设定的位置,默认值为0,表示从文件开头处开始计算,值为1表示从当前位置开始计算,值为2表示从文件结尾处开始计算。

2.绝对路径与相对路径

绝对路径表示从磁盘的根目录开始到目标文件的路径,相对路径表示相当于目前文件的位置到目标文件的位置。

4.csv文件

csV文件是一种逗号分隔式字符文件,可以被大部分的软件直接识别,例如记事本或Excel均可直接打开,CSV文件的特点是每个数据之间使用逗号分隔开。用Excel打开csv文件时,每一个数据占据一个单元格,每一个数据所占到单元格位置由逗号决定。

记事本打开

Excel打开:

相关推荐
IT_陈寒38 分钟前
React性能优化:这5个Hooks技巧让我减少了40%的重新渲染
前端·人工智能·后端
珑墨40 分钟前
【唯一随机数】如何用JavaScript的Set生成唯一的随机数?
开发语言·前端·javascript·ecmascript
Python编程学习圈43 分钟前
Python真的要一统天下了?
python
L***d6701 小时前
十七:Spring Boot依赖 (2)-- spring-boot-starter-web 依赖详解
前端·spring boot·后端
少云清1 小时前
【功能测试】6_Web端抓包 _Fiddler抓包工具的应用
前端·功能测试·fiddler
whn19771 小时前
达梦DW数据库安装
数据库
SelectDB1 小时前
宇信科技基于 SelectDB & Apache Doris 构建实时智能的银行经营分析平台
数据库·apache
豐儀麟阁贵1 小时前
8.5在方法中抛出异常
java·开发语言·前端·算法
Hacker_Oldv1 小时前
Python技能进阶:探索Selenium库,实现网页自动化测试与爬虫
自动化测试·软件测试·爬虫·python·selenium·职场和发展