返回顶部
首页 > 资讯 > 后端开发 > Python >python 文件操作2
  • 577
分享到

python 文件操作2

操作文件python 2023-01-30 21:01:12 577人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

继续讲解文件操作的其他内置方法读取文件句柄的指针指针,就是说,程序读取文件到哪一行了。f = open("Yesterday.txt",'r',encoding="utf-8

继续讲解文件操作的其他内置方法


读取文件句柄的指针

指针,就是说,程序读取文件到哪一行了。

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.tell())

执行输出 0

默认是从0行开始读取的。


读取一行,看下指针

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.tell())
print(f.readline().strip())
print(f.tell())

执行输出

0

Somehow, it seems the love I knew was always the most destructive kind

72


最后一个,为什么是72呢?文件明明只有64行,而且readline()只会读取一行。

因为tell()是根据字符串长度来计算的。


read()方法不光可以读取整个文件,也可以读取指定的长度

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.tell())
print(f.read(8))
print(f.tell())

执行输出

0

Somehow,

8


seek() 方法用于移动文件读取指针到指定位置。

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.tell())
print(f.readline(8))
print(f.tell())
f.seek(0)
print(f.tell())

执行输出

0

Somehow,

8

0


打印文件编码

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.encoding)

执行输出 utf-8


打印文件在内存中的编号

print(f.fileno())

执行输出 3

操作系统会记录打开文件,记录的编号。python就是调用这个接口而已。


打印文件名

print(f.name)

执行输出 Yesterday.txt


判断文件指针是否可以移动

print(f.seekable())

执行输出 True

比如linux系统里面的tty文件,是不允许移动指针的。


判断文件是否可读

print(f.readable())

执行输出 True


判断文件是否可写

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.writable())

执行输出 False

因为是r模式


flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

对于实时写入要求比较高的场景,可以用flush() 方法

f = open("test.txt",'r',encoding="utf-8")
f.write("hello\n")
f.flush()


在linux 上面yum安装的时候,有一个###进度条显示的

flush()可以模拟进度条显示,代码如下:

#!/usr/bin/env Python
# coding: utf-8
__author__ = 'www.py3study.com'

#导入模块
import sys,time

for i in range(10):
    #stdout表示标准输出,也就是屏幕输出。
    sys.stdout.write("#")
    #刷新缓冲区
    sys.stdout.flush()
    #等待0.1秒
    time.sleep(0.3)

执行效果如下:

jindu.gif


判断文件是否关闭

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.closed)

执行输出 False


清空文件内容

truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。

f = open("Yesterday.txt",'a',encoding="utf-8")
f.truncate()

查看文件,发现内容全无


truncate()也可以接参数

f = open("Yesterday.txt",'a',encoding="utf-8")
f.truncate(10)

把歌词重新复制进去,执行程序

查看文件内容

Somehow, i


发现保留了前10个字符串,后面的全部被清除了。


读写模式,写入文件

f = open("Yesterday.txt",'r+',encoding="utf-8")
print(f.readline().strip())
print(f.tell())
f.write("---hello---\n")

执行输出

Somehow, it seems the love I knew was always the most destructive kind

72

查看文件,发现内容写入到最后一行了。


写读模式,写入文件

f = open("Yesterday.txt",'w+',encoding="utf-8")
print(f.readline().strip())
print(f.tell())
f.write("---hello---\n")

执行输出


0

查看文件,只有 

---hello---


为啥只有一行呢?因为w表示创建一个新文件,文件内容被清空了。f.write写入了一行内容。


先写3行,设置指针,再写入一行

f = open("Yesterday.txt",'w+',encoding="utf-8")
f.write("---hello---\n")
f.write("---hello---\n")
f.write("---hello---\n")
print(f.tell())
f.seek(10)
print(f.tell())
print(f.readline())
f.write("---hello2---\n")
f.close()

执行输出

39

10

-


查看文件内容

---hello---

---hello---

---hello---

---hello2---


从内容上来看,指针设置不生效,文件还是写入到最后一行了

没有办法,根据指针修改。因为一旦这样,不想被修改的部分就会被覆盖。


写读模式,一般很少用

读写模式,还是比较常用的


还有几种模式

a+ 表示追加读写

rb 二进制文件


二进制文件,不允许传encoding参数,否则报错

ValueError: binary mode doesn't take an encoding argument


二进制模式,可以读取文件

f = open("Yesterday.txt",'rb')
print(f.readline())
print(f.readline())
print(f.readline())
f.close()

执行输出

b'---hello---\r\n'

b'---hello---\r\n'

b'---hello---\r\n'


前面的b 表示 二进制文件

\n 变成了\r\n 这个是windows的换行符


什么情况下,会用到二进制呢?

1. Socket网络传输

2. FTP发送上传ISO镜像



二进制写入模式

f = open("Yesterday.txt",'wb')
f.write("hello binary\n".encode())
f.close()

写入一个字符串时,必须要用encode()方法转换为二进制,才能写入文件

执行,查看文件内容

hello binary


还是上面的歌词,我需要修改第8行的歌词

就如舌尖上的雨露

改成

就如舌尖上的中国


如果一次性将文件内容写入到内存中,遇到大文件时,程序就卡死了。

那么程序的修改思路是这样的

每次读取一行,并写入新文件。当读取的内容符合条件时,修改内容,并写入新文件,这样比较节省内存。


f = open("Yesterday.txt",'r',encoding="utf-8")
f_new = open("Yesterday.txt.bak",'w',encoding="utf-8")
for line in f:
    if "雨露" in line:
        line = line.replace("雨露","中国")
    f_new.write(line)
f.close()
f_new.close()

执行程序,查看Yesterday.txt.bak文件

blob.png


with语句


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

with open('log','r') as f:
    pass

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


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

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


举个例子:

打开文件,读取一行

f = open("Yesterday.txt",'r',encoding="utf-8")
print(f.readline().strip())
f.close()

等同于

with open("Yesterday.txt",'r',encoding="utf-8") as f:
    print(f.readline().strip())


由于写代码的时候,经常会忘记写f.close()。虽然程序执行完毕,会自动释放内存。

如果碰到程序逻辑复杂的时候,不写f.close()就会造成内存浪费。

所以推荐使用with方法来打开一个文件。


上面改歌词的代码,可以改造成with方式

with open("Yesterday.txt",'r',encoding="utf-8") as f,\
    open("Yesterday.txt.bak",'w',encoding="utf-8") as f_new:
    for line in f:
        if "雨露" in line:
            line = line.replace("雨露","中国")
        f_new.write(line)

由于with 打开2个文件,代码太长了。根据python开发规范,一行代码不要超过80个字符。

直接用\ 换行,这样代码看着不会那么长。


执行效果和上面一样。with执行完之后,内存自动释放。

--结束END--

本文标题: python 文件操作2

本文链接: https://lsjlt.com/news/178990.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python 文件操作2
    继续讲解文件操作的其他内置方法读取文件句柄的指针指针,就是说,程序读取文件到哪一行了。f = open("Yesterday.txt",'r',encoding="utf-8...
    99+
    2023-01-30
    操作 文件 python
  • day 8 - 2 文件操作练习
    注册登录 需求: 1.对账号密码的长度进行限制并不允许出现特殊字符 2.把账号密码储存进文件中 3.密码最多输入错误三次 #分别判断注册时账号密码的长度与特殊字符 flag=1 while flag: y=0 x=0 ...
    99+
    2023-01-30
    操作 文件 day
  • Python操作MySQL(2)
    查询数据 使用execute()函数执行查询sql语句后,得到的只是受影响的行数,并不能真正拿到我们查询的内容。没关系,这里游标cursor中还提供了三种提取数据的方法:fetchone、fetchmany、fetchall,每个方法都会...
    99+
    2023-01-31
    操作 Python MySQL
  • python 文件操作api(文件操作函数)
    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:...
    99+
    2022-06-04
    操作 文件 函数
  • 【Python】文件操作
    一、文件的编码 思考:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢 答案:使用编码技术( 密码本)将内容翻译成0和1存入 编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回...
    99+
    2023-10-21
    python
  • python 文件操作
    python基本的文件操作,包括 open,read,write对文件操作流程:1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件 新建一个txt文件,内容是《Yesterday When I Was...
    99+
    2023-01-30
    操作 文件 python
  • python-文件操作
    文件操作 1.  读 / 写 操作 读取: r (read):只能读不能写,文件不存在就报错 ​#打开文件:    object = open('某txt文件',mode = 'r',encoding = '编码')​#读取文件所有内...
    99+
    2023-01-31
    操作 文件 python
  • python文件操作
    1. 文件操作 open 打开 f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes 打开一个文件的时候获取到的是一个文件句柄. ...
    99+
    2023-01-30
    操作 文件 python
  • Python--文件操作
    文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件  r模式,默认模式,文件不存在则报错 w模式,文件不存在则创建,文件存在则覆盖 a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以...
    99+
    2023-01-30
    操作 文件 Python
  • python---文件操作
    一、对文件操作流程1.打开文件,得到文件句柄并赋值给一个变量2.通过文件句柄对文件进行操作3.关闭文件二、文件打开模式f = open("file_test","r",encoding = "utf-8")    #打开文件,“读模式”,只...
    99+
    2023-01-31
    操作 文件 python
  • python 操作文件
     python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 操作前需要 import os; 返回当前目录,不包括文件名: os.getcwd(); 返回指定目录下的所有文件和目录名:os.listdir("...
    99+
    2023-01-31
    操作 文件 python
  • Python的文件操作
    读操作 file = open('测试文件',mode='r',encoding='utf-8') print(file.read())   写操作 file = open('测试文件',mode='w',encoding='utf...
    99+
    2023-01-30
    操作 文件 Python
  • Python--6 文件操作
    文件通常用于存储数据或应用系统的参数。Python 提供了 OS、 os.path、 shutil 等模块处理文件, 其中包括打开文件、 读写文件、 复制和删除文件等函数。 python文件操作基本流程:   1.打开文件,或者新建立一个...
    99+
    2023-01-30
    操作 文件 Python
  • Python文件IO操作
    文件IO常用操作:open打开read读取write写入close关闭readline行读取readlines多行读取seek文件指针操作tell指针位置打开操作:open(file, mode='r', buffering=-1, enc...
    99+
    2023-01-31
    操作 文件 Python
  • python文件的操作
    首先看看在pycharm输入文件句柄,怎样显示他的定义 f = open('student_msg', encoding='utf-8', mode='a+') # 打开一个文件,赋值给f print(type(f), f) # f文件句...
    99+
    2023-01-31
    操作 文件 python
  • 3 Python文件操作
    open 以什么编码方式存储文件,就以什么编码方式打开 f = open('d:\模特主妇护士班主任.txt',encoding='utf-8') # 绝对路径打开 f.close() f = open('模特主妇护士班主任',enc...
    99+
    2023-01-31
    操作 文件 Python
  • python操作Xml文件
    一、简单介绍Xml是实现不同语言或程序进行数据交换的协议,跟json差不多,但是xml远远先于json出现,例如在很多传统的金融行业的很多系统接口还主要是xml格式。Xml的格式如下:<Settings modified="2016-...
    99+
    2023-01-31
    操作 文件 python
  • python文件操作一
    Python 提供了必要的函数和方法进行默认情况下的文件基本操作 open()函数语法:File_object= open(file_name [, access_mode][, buffering]) file_name:file_n...
    99+
    2023-01-31
    操作 文件 python
  • Python 操作.csv文件
    import csv csvfile = file('E:\\workspace\\data\\ex1.csv', 'rb') reader = csv.reader(csvfile) for line in reader:     p...
    99+
    2023-01-31
    操作 文件 Python
  • python文件操作二
    1、常用函数: fileObject.read([size])size为读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个"\n"符号。代码示例1: with open("tex...
    99+
    2023-01-31
    操作 文件 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作