Python常见文件操作的示例详解

目录
  • 从文件中读取数据
  • 为什么要提供文件路径
  • 逐行读取
  • 创建一个包含文件各行内容的列表
  • 使用文件中的内容
  • 包含千位以上的大型文件
  • 圆周率中包含你的生日吗
  • 写入文件
  • 附加到文件

从文件中读取数据

1:读取整个文件

首先创建一个文件,它包含一些文本信息,注意:如果该文件为.py文件,则再进行操作的时候可以不写路径,如果不是.py文件,则必须标明路径。

现在我们创建一个python文件,名为text.py,给他写入如下文本信息:

下面的程序打开并读取这个文件,再将其内容显示到屏幕上:

with open('text.py') as pythonProject2:#open(要打开的文件名称)
#open函数返回一个表示文件test.py的对象,python将该对象赋给pythonProject2
    cc=pythonProject2.read()
print(cc)

python在当前执行的文件所在目录中查找指定的文件

关键字 with 在不再需要访问文件后将其关闭在这个程序中,注意到我们调用了 open(),但没有调用 close()。也可以调用 open()和 close()来打开和关闭文件,但这样做时,如果程序存在 bug 导致方法 close()未执行,文件将不会关闭。这看似微不足道,但未妥善关闭文件可能导致数据丢失或受损。如果在程序中过早调用 close(),你会发现需要使用文件时它已关闭(无法访问),这会导致更多的错误。并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用前面所示的结构(with open(需要打开的文件名称) as 赋给另一个对象),可让 Python 去确定:你只管打开文件,并在需要时使用它,Python 自会在合适的时候自动将其关闭。

细心的同学已经发现了,我们上文所输出的内容多了一行空格,原因是:read()到达文件末尾的时候返回一个空的字符串,而将这个空字符串显示出来就是一个空格,而想要删除空行只需要使用我们之前学习过的rstrip()函数。

为什么要提供文件路径

将类似于 .txt 的简单文件名传递给函数 open()时,Python 将在当前执行的文件(即物程序文件)所在的目录中查找。

根据你组织文件的方式,有时可能要打开不在程序文件所属目录中的文件。例如,你可能将程序文件存储在了文件夹 python_work中,而该文件夹中有一个名为 text_files 的文件夹用于存储程序文件操作的文本文件。虽然文件夹 text_files 包含在文件夹python_work 中,但仅向 open()传递位于前者中的文件名称也不可行,因为 Python 只在文件夹 python_work中查找,而不会在其子文件夹 text_files 中查找。要让 Python 打开不与程序文件位于同一个目录中的文件,需要提供文件路径,让Python 到系统的特定位置去查找。

否则会出现如下图所示:python会告诉你找不到该文件

那么该怎么解决这个问题呢?

这里我们就需要用绝对路径,例如,我们现在建立一个.txt在桌面。

下面我们使用相对路径(仅提供文件名的方式),去打开:

with open(r"新建文本文档.txt",'r',encoding='utf-8') as f:
    ff=f.read()
print(ff)

我们发现文件根本打不开。

现在我们使用绝对路径(提供具体的位置信息),去打开:

with open(r"C:\Users\Lenovo\Desktop\新建文本文档.txt",'r',encoding='utf-8') as f:
    ff=f.read()
print(ff)

文件内容被很好的显示出来了。

注:encoding='utf-8的作用是为了避免出现乱码。

上图所示程序,不加encoding='utf-8,就会出现以下情况;

注:显示文件路径时,Windows系统使用反斜杠(\),而不是斜杠(/),但在代码中仍可以使用斜杠。

如果在文件路径中直接使用反斜杠,将引发错误,因为反斜杠用于对字符串中的字符进行转义。

举例:

C:\path\to\file.txt

其中的\t会被解读为制表符,如果一定要使用反斜杠,可对相对路径中的每个反斜杠都进行转义:

C:\\path\\to\\file.txt

逐行读取

读取文件时,常常需要检查其中的每一行:可能要在文件中查找特定的信息,或者要以某种方式修改文件中的文本。

直接使用for循环的方法:

在该目录下的文件读取:

for line in open("123.txt",encoding='utf-8'):
    print(line)

计算机其他位置中的:

for line in open(r"C:\Users\Lenovo\Desktop\新建文本文档.txt",encoding='utf-8'):
    print(line)

使用while循环

在该目录下的文件读取:

f=open("123.txt",encoding='utf-8')
line=f.readline()
while line:
    print(line)
    line=f.readline()
f.close()

计算机其他位置中的:

f=open(r"C:\Users\Lenovo\Desktop\新建文本文档.txt",encoding='utf-8')
line=f.readline()
while line:
    print(line)
    line=f.readline()
f.close()

使用with…as结构

在该目录下的文件读取:

with open("123.txt",encoding='utf-8') as f:
    for line  in f:
        print(line)

计算机其他位置中的:

with open(r"C:\Users\Lenovo\Desktop\新建文本文档.txt",encoding='utf-8') as f:
    for line in f:
        print(line)

运行上面两个文件的结果:

hi,python

早上好

晚上好

你好

窗前明月光,疑似地上霜

举头望明月,低头思归乡

鹅鹅鹅,曲项向天歌

白毛浮绿水,红掌拨清波

我们不难发现,空白行变得更多了,原因是:在这个文件中,每行末尾都有一个看不见的换行符,而print函数在调用的时候也会产生一个换行符,因此每行末尾都会有两个换行符,一个来自文件,一个来自print函数的调用,要想消除这些换行符,可在调用print函数的时候,使用rstrip():

print(line.rstrip())

处理之后的结果:

窗前明月光,疑似地上霜
举头望明月,低头思归乡
鹅鹅鹅,曲项向天歌
白毛浮绿水,红掌拨清波

hi,python
早上好
晚上好
你好

创建一个包含文件各行内容的列表

使用关键字 with 时,open()返回的文件对象只在 with 代码块内可用。如果要在 with 代码块外访问文件的内容,可在 with 代码块内将文件的各行存储在一个列表中,并在 with 代码块外使用该列表:可以立即处理文件的各个部分,也可以推迟到程序后面再处理。

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()#使用readlines()从文件中读取每一行,并将其存储在一个列表中
    //这样处理后,在with代码块外仍然可以使用变量lines
for line  in lines:
    print(line)

输出结果:

hi,python

早上好

晚上好

你好

使用文件中的内容

举例:

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=str()#创建空的字符串用于存储文本内容
for line  in lines:
    pi+=line.rstrip()#将每行末尾的空行去掉
print(pi)
print(len(pi))#输出字符串的长度

1234562345671038417968539
25

注:读取文本文件的时候,python会自动将所有的文本文件解读成字符串,如果文本文件中的内容为数值,并且要作为数值使用,就必须使用int()函数,或者float()函数将其进行转化。

举例:

如果上述例子中的123.txt中的内容要作为数值使用,则程序应进行修改:

如下:

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=int()#进行强制转化
#pi=float()
for line  in lines:
    pi+=int(line)
    #pi+=float(line)
print(pi)

1038418326562

包含千位以上的大型文件

前面我们所分析的都是包含几行的文本文件,现在假设我们有一个文件,其中包含精确到小数点后千位而不是30位的圆周率,也可创建一个字符串将他包含到里面,有的小伙伴想到这个问题会觉得很棘手,程序该怎么写呢?

其实,我们前面编撰好的程序就可以直接进行传递使用:

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=str()#创建空的字符串用于存储文本内容
for line  in lines:
    pi+=line.rstrip()#将每行末尾的空行去掉
print(f"{pi[:52]}.....")#为了避免显示的内容不停的滚动,只打印前52位
print(len(pi))#输出字符串的长度

1234562345671038417968539168519635885951538287826636.....
1596

同理,对于万位,百万位等等更大的文件,我们的程序仍然可以使用。

圆周率中包含你的生日吗

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=str()#创建空的字符串用于存储文本内容
for line  in lines:
    pi+=line.rstrip()#将每行末尾的空行去掉
you_birthday=str(input("请输入你的生日"))
if you_birthday in pi:
    print("yes")
else:
    print("NO")

请输入你的生日0904
yes

写入文件

1:写入空文件:

要将文本写入文件,你在调用open()时,需要提供另一个参数,告诉python,你要写入打开的文件.

举例:

with open("123.txt",'w',encoding='utf-8') as f:
    f.write("晚上好")

打开该文件:

#open(名称,操作模式 )#操作模式包括:w:写,r:读取 ,a:附加,r+:读写`

如果省略了操作模式,python自动以只读的方式打开,如果要写入的文件不存在,python的open()函数将自动创建它,以写入的模式(w)打开,如果该文件已存在,则python会自动清空之前的内容。

python只能将字符串写入文本文件文件,要是想将数据存储到文本文件中,需要先用str()将其转化为字符串格式。

写入多行:

函数write()不会在写入的文本末尾添加换行符,因此如果写入多行时没有指定换行符,文件看起来可能不是我们想要的那样:

举例:

with open("123.txt",'w',encoding='utf-8') as f:
    f.write("早上好---good morning")
    f.write("中午好---good afternoon")
    f.write("晚上好---good evening")

如下图所示,所有的内容都被显示在一行:

怎么解决这种问题呢?需要在方法调用write()中包含换行符:

with open("123.txt",'w',encoding='utf-8') as f:
    f.write("早上好---good morning\n")
    f.write("中午好---good afternoon\n")
    f.write("晚上好---good evening\n")

现在文本内容呈现在不同行中:

像显示到终端一样,还可以使用空格,制表符和空行来设置这些输出的格式。

附加到文件

如果要给文件添加内容而不是覆盖原来的内容,可以以附加模式打开文件,以附加模式打开文件时,python不会在返回文件对象前清空文件的内容,而是将写入文件的行添加到文件末尾,如果指定的文件不存在,python会为你创建一个空文件。

举例:

with open("123.txt",'a',encoding='utf-8') as f:#以附加模式打开
    f.write("hello,world")#将hello,world写入文件

原内容并没有被清空。

到此这篇关于Python常见文件操作的示例详解的文章就介绍到这了,更多相关Python文件操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python函数和文件操作详情

    目录 前言 一.函数 二.自定义函数 1.创建函数 2.调用函数 3.函数默认值 4.收集函数(可变函数) 5.全局与局部 6.匿名函数lambda 7.内嵌函数 三.常用内置函数 1.max和min 2.abs 3.round 4.pow 5.divmod 6.help 7.filter 8.map 四.文件 1.read()方法读取 2.readline()方法 3.readlines()方法 4.遍历文件对象读取 5.文件的写入 6.文件关闭 7.with方式 8.pickle 前言 本篇

  • Python实现文件及文件夹操作大全

    目录 一.文件操作 1.1 文件常规操作 1.2 文件读写 1.3 文件相关属性访问 二.文件夹操作 2.1 文件夹常规操作 2.2 遍历文件夹 2.3 文件夹相关属性访问 三.其他相关操作 3.1 工作目录操作 3.2 文件&文件夹其他操作 在日常工作或生活中,总避免不了需要操作文件或文件夹,比如希望找出电脑中所有临时文件并清除,或者找到指定文件夹内所有图片文件并进行重新命名等等,如果能通过Python脚本的方式解决,会大大提升相关操作效率,本文即总结使用Python进行常见操作相关知识点,方

  • Python文件操作和数据格式详解(简单简洁)

    目录 一.文件操作 1.文件的基本操作 2.读文件 3.写文件 4.os模块的使用 二.JSON 总结 一.文件操作 前言: 什么是计算机的流? "流"指的是在不同的输入/输出等设备(键盘.内存.显示器.音响等)之间进行传递数据. 例如:在Python中使用input()函数,就会产生数据经过键盘流输入到存储器. print() 就会有数据从存储器中流出到屏幕.所以流实际上就是一个字节序列. 就如同管道中的水 “流来流去”; 1.文件的基本操作 Python中可以通过内置函数open(

  • Python基本文件操作实用指南

    目录 一.前言 二.创建和打开文件 1.打开一个不存在的文件时先创建该文件 2.以二进制形式打开文件 3.打开文件时指定编码方式 三.关闭文件 四.打开文件时使用with语句 五.写入文件内容 六.读取文件 1.读取指定字符 2.读取一行 3.读取全部行 总结 一.前言 在Python中,内置了文件(File)对象.在使用文件对象时,首先需要通过内置的open()方法创建一个文件对象,然后通过该对象提供的方法进行一些基本文件操作.例如,可以使用文件对象的write()方法向文件中写入内容,以及使

  • Python 文件操作方法总结

    目录 文件处理流程 基本操作 打开文件 读文件内容 关闭文件 写文件 文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 r模式,默认模式,文件不存在则报错 w模式,文件不存在则创建,文件存在则覆盖 a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写日志文件的时候常用),追加模式是一种特殊的写模式 b(rb,wb,ab)模式:不用加encoding:utf-8 基本操作 打开文件 open(path, flag[, encod

  • Python文件操作实战案例之用户登录

    目录 一.前言 二.案例:用户登录 1.案例分析 2.程序设计 2.1 main() 2.2 c_flag() 2.3 init() 2.4 print_login_menu() 2.5 user_select() 2.6 root_login() 2.7 user_register() 2.8 user_login() 3.功能演示 总结 一.前言 在上一小节,我们介绍了文件的基本操作以及数据交换的格式,为了巩固我们上一节文件操作的知识. 在这里我们做一个最基本的案例:用户登录 二.案例:用户

  • Python常见文件操作的示例详解

    目录 从文件中读取数据 为什么要提供文件路径 逐行读取 创建一个包含文件各行内容的列表 使用文件中的内容 包含千位以上的大型文件 圆周率中包含你的生日吗 写入文件 附加到文件 从文件中读取数据 1:读取整个文件 首先创建一个文件,它包含一些文本信息,注意:如果该文件为.py文件,则再进行操作的时候可以不写路径,如果不是.py文件,则必须标明路径. 现在我们创建一个python文件,名为text.py,给他写入如下文本信息: 下面的程序打开并读取这个文件,再将其内容显示到屏幕上: with ope

  • C语言中文件常见操作的示例详解

    目录 文件打开和关闭 文件写入 文件读取 fseek函数 ftell函数 Demo示例 解决读取乱码 FILE为C语言提供的文件类型,它是一个结构体类型,用于存放文件的相关信息.文件打开成功时,对它作了内存分配和初始化. 每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节. 一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便. 文件打开和关闭 C语言的安全文件打开函数为_wfopen_s和_fopen_s

  • Python中字典常用操作的示例详解

    目录 前言 初始化 合并字典 字典推导式 Collections 标准库 字典转 JSON 字典转 Pandas 前言 字典是Python必用且常用的数据结构,本文梳理常用的字典操作,看这个就够了,涉及: 初始化 合并字典 字典推导式 Collections 标准库 字典转JSON 字典转Pandas 初始化 # 最常用这种 my_object = { "a": 5, "b": 6 } # 如果你不喜欢写大括号和双引号: my_object = dict(a=5,

  • Python常见文件操作的函数示例代码

    复制代码 代码如下: # -*-coding:utf8 -*- ''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() 去掉文件名, 返回目录路径 join() 将分离的各部分组合成一个路径名 split() 返回 (dirname(), basename()) 元组 splitdrive() 返回 (drivename, pathname) 元组 splitext() 返回 (filename,

  • Python黑魔法库安装及操作字典示例详解

    目录 1. 安装方法 2. 简单示例 3. 兼容字典的所有操作 4. 设置返回默认值 5. 工厂函数自动创建key 6. 序列化的支持 7. 说说局限性 本篇文章收录于<Python黑魔法手册>v3.0 第七章,手册完整版在线阅读地址:Python黑魔法手册 3.0 文档 字典是 Python 中基础的数据结构之一,字典的使用,可以说是非常的简单粗暴,但即便是这样一个与世无争的数据结构,仍然有很多人 "用不惯它" . 也许你并不觉得,但我相信,你看了这篇文章后,一定会和我一

  • python模块shutil函数应用示例详解教程

    目录 本文大纲 知识串讲 1)模块导入 2)复制文件 3)复制文件夹 4)移动文件或文件夹 5)删除文件夹(慎用) 6)创建和解压压缩包 本文大纲 os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作.而Python另外一个标准库--shutil库,它作为os模块的补充,提供了复制.移动.删除.压缩.解压等操作,这些 os 模块中一般是没有提供的.但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的. 知识串

  • 利用Python自动生成PPT的示例详解

    在日常工作中,PPT制作是常见的工作,如果制作创意类PPT,则无法通过自动化的形式生成,因为创意本身具有随机性,而自动化解决的是重复性工作,两者有所冲突. python-pptx是python处理PPT的一个库,注重的是读和写,无法导出,没有渲染功能. 废话不多说,第一步,安装python-pptx库: pip3 install -i https://pypi.doubanio.com/simple/ python-pptx ppt里面处理的主要对象一般为文本框,表格,图片. 每一页的ppt为一

  • Go语音开发中常见Error类型处理示例详解

    目录 前言 透明错误处理策略 带来的问题 哨兵(Sentinel)错误处理策略 带来的问题 1.对errors.Error()的依赖 2.定义的错误类型会被公开 Error types 带来的问题 不透明错误处理策略(Opaque errors) 带来的问题 总结 前言 上文我们了解了 Error 在Go 中的设计理念.单从理念上来看, Error 的设计似乎有利于逻辑处理.但实际上,在开发过程中,我们还会遇到各种各样的困难.为了优化开发的流程,开发者们发明了很多处理 Error 的做法.今天我

  • 利用Python实现智能合约的示例详解

    目录 智能合约 1. 是什么 2. 使用场景 用Python如何实现 1. 设计智能合约 2. 编写智能合约源代码 3. 编译智能合约 4. 部署智能合约 5. 调用智能合约方法 6. 监控智能合约事件 7. 升级智能合约 智能合约 1. 是什么 智能合约是一种由计算机程序编写的自动化合约,它可以在没有第三方干预的情况下执行交易和契约条款.智能合约使用区块链技术实现,可以实现不同的功能,例如交易.投票.代币发放和数据存储等.智能合约的执行是基于其代码的逻辑,并且在既定条件满足时自动执行.智能合约

  • 基于Python的文件类型和字符串详解

    1. Python的文件类型 1. 源代码--直接由Python解析 vi 1.py #!/usr/bin/python print 'hello world' 这里的1.py就是源代码 执行方式和shell脚本类似: chmod +x 后,./1.py Python 1.py 2. 字节代码 Python源码文件经编译后生成的扩展名为pyc的文件 编译方法: [root@t1 py]# cat 2.py #!/usr/bin/python import py_compile py_compil

随机推荐