Python全栈之路系列之文件操作

python可以对文件进行查看、创建等功能,可以对文件内容进行添加、修改、删除,且所使用到的函数在python3.5.x为open,在python2.7.x同时支持file和open,但是在3.5.x系列移除了file函数。

Python文件打开方式

文件句柄 = open('文件路径','打开模式')

登录后复制

Ps:文件句柄相当于于变量名,文件路径可以写为绝对路径也可以写为相对路径。

Python打开文件的模式

基本的模式

模式 说明 注意事项

r只读模式文件必须存在w只写模式文件不存在则创建文件,文件存在则清空文件内容x只写模式文件不可读,文件不存在则创建,存在则报错a追加模式文件不存在创建文件,文件存在则在文件末尾添加内容

带+的模式

模式 说明

r+读写w+写读x+写读a+写读

带b的模式

模式 说明

rb二进制读模式wb二进制写模式xb二进制只写模式ab二进制追加模式

提示:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

立即学习“Python免费学习笔记(深入)”;

带+带b的模式

模式 说明

rb+二进制读写模式wb+二进制读写模式xb+二进制只写模式ab+二进制读写模式

Python文件读取方式

模式 说明

read([size])读取文件全部内容,如果设置了size,那么久读取size字节readline([size])一行一行的读取readlines()读取到的每一行内容作为列表中的一个元素

测试的文件名是hello.tx”,文件内容为:

Hello Word!123abc456abc789abc

登录后复制

read

代码:

# 以只读的方式打开文件hello.txtf = open("hello.txt","r")# 读取文件内容赋值给变量cc = f.read()# 关闭文件f.close()# 输出c的值print(c)

登录后复制

输出结果:

C:Python35python.exe F:/Python_code/sublime/Day06/file.pyHello Word!123abc456abc789abc

登录后复制

readline

代码:

# 以只读模式打开文件hello.txtf = open("hello.txt","r")# 读取第一行c1 = f.readline()# 读取第二行c2 = f.readline()# 读取第三行c3 = f.readline()# 关闭文件f.close()# 输出读取文件第一行内容print(c1)# 输出读取文件第二行内容print(c2)# 输出读取文件第三行内容print(c3)

登录后复制

输出结果:

C:Python35python.exe F:/Python_code/sublime/Day06/file.pyHello Word!123abc

登录后复制

readlines

# 以只读的方式打开文件hello.txtf = open("hello.txt","r")# 将文件所有内容赋值给cc = f.readlines()# 查看数据类型print(type(c))# 关闭文件f.close()# 遍历输出文件内容for n in c:    print(n)

登录后复制

结果

C:Python35python.exe F:/Python_code/sublime/Day06/file.py# 输出的数据类型Hello Word!123abc456abc789abc

登录后复制

Python文件写入方式

方法 说明

write(str)将字符串写入文件writelines(sequence or strings)写多行到文件,参数可以是一个可迭代的对象,列表、元组等

write

代码:

# 以只读的模式打开文件write.txt,没有则创建,有则覆盖内容file = open("write.txt","w")# 在文件内容中写入字符串test writefile.write("test write")# 关闭文件file.close()

登录后复制

write.txt文件内容为:

test write

登录后复制

writelines

代码:

# 以只读模式打开一个不存在的文件wr_lines.txtf = open("wr_lines.txt","w",encoding="utf-8")# 写入一个列表f.writelines(["11","22","33"])# 关闭文件f.close()

登录后复制

wr_lines.txt文件内容:

112233

登录后复制登录后复制

Python文件操作所提供的方法

close(self):

关闭已经打开的文件

f.close()

登录后复制

fileno(self):

文件描述符

 f = open("hello.txt","r")ret = f.fileno()f.close()print(ret)

登录后复制

执行结果:

3

登录后复制

flush(self):

刷新缓冲区的内容到硬盘中

f.flush()

登录后复制

isatty(self):

判断文件是否是tty设备,如果是tty设备则返回True,否则返回False

f = open("hello.txt","r")ret = f.isatty()f.close()print(ret)

登录后复制

返回结果:

C:Python35python.exe F:/Python_code/sublime/Day06/file.pyFalse

登录后复制登录后复制

readable(self):

是否可读,如果可读返回True,否则返回False

f = open("hello.txt","r")ret = f.readable()f.close()print(ret)

登录后复制

返回结果:

C:Python35python.exe F:/Python_code/sublime/Day06/file.pyTrue

登录后复制登录后复制

readline(self, limit=-1):

每次仅读取一行数据

f = open("hello.txt","r")print(f.readline())print(f.readline())f.close()

登录后复制

返回结果:

C:Python35python.exe F:/Python_code/sublime/Day06/file.pyHello Word!123

登录后复制

readlines(self, hint=-1):

把每一行内容当作列表中的一个元素

f = open("hello.txt","r")print(f.readlines())f.close()

登录后复制

返回结果:

C:Python35python.exe F:/Python_code/sublime/Day06/file.py['Hello Word!', '123', 'abc', '456', 'abc', '789', 'abc']

登录后复制

tell(self):

获取指针位置

f = open("hello.txt","r")print(f.tell())f.close()

登录后复制

返回结果:

C:Python35python.exe F:/Python_code/sublime/Day06/file.py0

登录后复制

seek(self, offset, whence=io.SEEK_SET):

指定文件中指针位置

f = open("hello.txt","r")print(f.tell())f.seek(3)print(f.tell())f.close()

登录后复制

执行结果

C:Python35python.exe F:/Python_code/sublime/Day06/file.py03

登录后复制

seekable(self):

指针是否可操作

f = open("hello.txt","r")print(f.seekable())f.close()

登录后复制

执行结果

C:Python35python.exe F:/Python_code/sublime/Day06/file.pyTrue

登录后复制登录后复制

writable(self):

是否可写

f = open("hello.txt","r")print(f.writable())f.close()

登录后复制

执行结果

C:Python35python.exe F:/Python_code/sublime/Day06/file.pyFalse

登录后复制登录后复制

writelines(self, lines):

写入文件的字符串序列,序列可以是任何迭代的对象字符串生产,通常是一个字符串列表。

f = open("wr_lines.txt","w")f.writelines(["11","22","33"])f.close()

登录后复制

执行结果

112233

登录后复制登录后复制

read(self, n=None):

读取指定字节数据,后面不加参数默认读取全部

f = open("wr_lines.txt","r")print(f.read(3))f.seek(0)print(f.read())f.close()

登录后复制

执行结果

C:Python35python.exe F:/Python_code/sublime/Day06/file.py112112233

登录后复制

write(self, s):

往文件里面写内容

f = open("wr_lines.txt","w")f.write("abcabcabc")f.close()

登录后复制

文件内容

abcabcabc

登录后复制

同时打开多个文件

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open('log','r') as f: 代码块

登录后复制

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:

with open('log1') as obj1, open('log2') as obj2:    pass

登录后复制

更多Python全栈之路系列之文件操作相关文章请关注PHP中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2279622.html

(0)
上一篇 2025年2月27日 17:33:27
下一篇 2025年2月27日 17:33:45

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python抓取百度百科数据

    抓取策略 确定目标:确定抓取哪个网站的哪些页面的哪部分数据。本实例抓取百度百科python词条页面以及python相关词条页面的标题和简介。分析目标:分析要抓取的url的格式,限定抓取范围。分析要抓取的数据的格式,本实例中就要分析标题和简介…

    2025年2月27日 编程技术
    200
  • Python-Virtualenv

    注释 在使用virtualenv前ubuntu默认的解释器是python2.7,而且/usr/lib/python3里面已经安装好了ipython3和requests $ pythonPython 2.7.12 (default, Nov …

    编程技术 2025年2月27日
    200
  • Python-Django

    准备工作 新建一个django项目 # 新建一个django项目$ django-admin startproject mysite# 新建一个app$ django-admin startapp blog 登录后复制 项目的结构 ├── …

    编程技术 2025年2月27日
    200
  • python学习笔记 – ThreadLocal

    我们在编写多线程程序的时候,往往会遇到两种类型的变量。 一种是全局变量,多个线程共享。为了避免改乱为,我们在前面已经提到说要加锁。 一种是局部变量。仅供一个线程使用,线程间相互不影响。 例如下列程序中task()函数中定义的count变量就…

    编程技术 2025年2月27日
    200
  • [python] 初探’函数式编程’

    函数式编程 上学期有上一门叫 ‘人工智能’ 的课,老师强行要我们学了一个叫做 prolog 的语言,哇那感觉确实难受,思维方式完全和之前学过的不一样,写个汉诺塔想了半天,最后还是在网上找了段代码修改一下(怕被老师发现…

    编程技术 2025年2月27日
    200
  • Python-解决Cx_Oracle查询时UnicodeDecodeError的问题

    近期在项目中,要对1张100多万条记录的表进行查询,然后进行一些数据的统计,但是在这个过程中,发现只查询出来几条数据就出现了unicodedecodeerror了。  在这里,我们使用sqlalchemy库进行查询,其内部还是cx_orac…

    编程技术 2025年2月27日
    200
  • python小脚本:定时提醒喝水

                        ## -*- coding: utf-8 -*- import subprocessimport time,osdef createFile(filename): if os.path.exists(…

    编程技术 2025年2月27日
    200
  • [Python]实现Python类的公共属性

    背景 今天看到有人问python的类有没有类似公共属性的特性,就是修改了某个实例的对应属性,该类的所有实例的对应属性都随之修改,想了想用了一个辅助的单例模式的类解决了问题。 思路 修改一个实例另一个实例也跟着修改,听起来很像单例模式的特性,…

    编程技术 2025年2月27日
    200
  • Python全栈之路系列之元组数据类型

    元组(tuple)和列表的为唯一区别就是列表可以更改,元组不可以更改,其他功能与列表一样 创建元组的两种方法 第一种 ages = (11, 22, 33, 44, 55) 登录后复制 第二种 ages = tuple((11, 22, 3…

    编程技术 2025年2月27日
    200
  • Python简单介绍以及Python环境搭建

    Python 简单介绍 适合领域: Web网站和各种网络服务 系统工具和脚本 作为’胶水’语言把其他语言开发的模块包装起来方便使用 不适合领域: 立即学习“Python免费学习笔记(深入)”; 贴近硬件的代码(首选C…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论