我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python 文件操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python 文件操作

python基本的文件操作,包括 open,read,write


对文件操作流程:


1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件 


新建一个txt文件,内容是《Yesterday When I Was Young》一首歌的歌词

内容如下:

Somehow, it seems the love I knew was always the most destructive kind
Yesterday when I was young
The taste of life was sweet
As rain upon my tongue
I teased at life as if it were a foolish game
The way the evening breeze
May tease the candle flame
The thousand dreams I dreamed
The splendid things I planned
I always built to last on weak and shifting sand
I lived by night and shunned the naked light of day
And only now I see how the time ran away
Yesterday when I was young
So many lovely songs were waiting to be sung
So many wild pleasures lay in store for me
And so much pain my eyes refused to see
I ran so fast that time and youth at last ran out
I never stopped to think what life was all about
And every conversation that I can now recall
Concerned itself with me and nothing else at all
The game of love I played with arrogance and pride
And every flame I lit too quickly, quickly died
The friends I made all somehow seemed to slip away
And only now I'm left alone to end the play, yeah
Oh, yesterday when I was young
So many, many songs were waiting to be sung
So many wild pleasures lay in store for me
And so much pain my eyes refused to see
There are so many songs in me that won't be sung
I feel the bitter taste of tears upon my tongue
The time has come for me to pay for yesterday
When I was young


打开文件,并读取内容

data = open("Yesterday.txt").read()
print(data)

执行报错

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 105: illegal multibyte sequence


为什么呢?

因为Windows的默认编码是gbk,而python的默认编码是utf-8。编码不匹配,所以,打开文件时,要指定编码

data = open("Yesterday.txt",encoding="utf-8").read()
print(data)

再次执行,就不会报错了。


上面的代码,是不符合正常的编码规范的。

因为data就是在内存中的一个变量了,没法对文件做进一步的操作了,只能读取。


正常情况下,是打开一个文件,一般用变量f,去掉read()

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

f它是一个内存对象,也称之为 文件句柄

句柄就是文件的内存对象。

句柄包含文件的 文件名、字符集、大小、硬盘起始位置。


读取

data = f.read()
print(data)


写入

f.write("我爱北京天安门")

执行报错

io.UnsupportedOperation: not writable


为什么呢?因为文件默认打开,是只读默认,不允许写入。

所以需要对f做进一步修改。

w表示写入 格式必须要写在文件的后面

f = open("Yesterday.txt",'w',encoding="utf-8")
data = f.read()
f.write("我爱北京天安门")

执行报错

io.UnsupportedOperation: not readable

因为w 只能写入,不能读取

同时,Yesterday.txt文件内容被清空了。w是创建一个新文件,如果文件存在,直接覆盖,所以变成一个空文件了。

不存在,则创建


写2句话

f = open("Yesterday.txt",'w',encoding="utf-8")
f.write("我爱北京天安门\n")
f.write("天安门上太阳升\n")

查看文件内容

blob.png


还有一种追加的写入方式

a就是append的意思

f = open("Yesterday.txt",'a',encoding="utf-8")
f.write("伟大领袖毛主席\n")
#关闭资源
f.close()

查看文件内容

blob.png

同样的,也不能使用read()方法,执行就报错。


把上面的歌词重新复制到Yesterday.txt中


读取前5行

f = open("Yesterday.txt",'r',encoding="utf-8")
for i in range(5):
    #readline()每次读取一行,strip()去除左右的换行和空格
    print(f.readline().strip())
f.close()

执行输出

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

不知为何,我经历的爱情总是最具毁灭性的的那种

Yesterday when I was young

昨日当我年少轻狂

The taste of life was sweet


readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,每一行就是一个元素

注意: 大文件,不建议使用readlines(),会造成程序卡死

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

执行输出

['Somehow, it seems the love I knew was always the most destructive kind\n', '不知为何,我经历的爱情总是最具毁灭性的的那种\n',...]


读取文件,在第3行的时候,输出特殊标记

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

所以直接用enumerate() 读取索引,判断索引为3时,输出标记

f = open("Yesterday.txt",'r',encoding="utf-8")
for index,line in enumerate(f.readlines()):
    if index == 3:
        print('------Here is the segmenting line------')
        #跳出本次循环
        continue
    print(line.strip())
f.close()

执行输出

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

不知为何,我经历的爱情总是最具毁灭性的的那种

Yesterday when I was young

------Here is the segmenting line------

The taste of life was sweet

...


上面的方法比较low

下面介绍一个比较高效的方法

f = open("Yesterday.txt",'r',encoding="utf-8")
#计数器,默认为0
count = 0
#循环句柄
for line in f:
    if count == 3:
        print('------Here is the segmenting line------')
        #计数加1
        count += 1
        # 跳出本次循环
        continue
    #打印一行内容
    print(line)
    # 计数加1
    count += 1

执行输出,效果同上

因为循环句柄的时候,没法同时输出行号,所以临时加了一个计数器,用来做判断。

这种方法,占用内存极少。不会把文件所有内容写入内存,而只是每次把一行的内容写入到内存。当下一次循环时,上一次内存的内容被覆盖。

所以整个程序执行完成,内存只保存了一行的内容。处理超大文件,也不在话下。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python 文件操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 文件操作api(文件操作函数)

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来
2022-06-04

python 文件操作

python基本的文件操作,包括 open,read,write对文件操作流程:1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件新建一个txt文件,内容是《Yesterday When I Was Young
2023-01-30

python-文件操作

文件操作1.  读 / 写 操作读取: r (read):只能读不能写,文件不存在就报错​#打开文件:    object = open('某txt文件',mode = 'r',encoding = '编码')​#读取文件所有内容到内存:
2023-01-31

Python--文件操作

文件处理流程1.打开文件,得到文件句柄并赋值给一个变量2.通过句柄对文件进行操作3.关闭文件 r模式,默认模式,文件不存在则报错w模式,文件不存在则创建,文件存在则覆盖a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写
2023-01-30

python文件操作

1. 文件操作 open 打开 f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes 打开一个文件的时候获取到的是一个文件句柄.
2023-01-30

python 操作文件

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。操作前需要 import os;返回当前目录,不包括文件名: os.getcwd();返回指定目录下的所有文件和目录名:os.listdir("dirn
2023-01-31

python---文件操作

一、对文件操作流程1.打开文件,得到文件句柄并赋值给一个变量2.通过文件句柄对文件进行操作3.关闭文件二、文件打开模式f = open("file_test","r",encoding = "utf-8")    #打开文件,“读模式”,只
2023-01-31

3 Python文件操作

open以什么编码方式存储文件,就以什么编码方式打开f = open('d:\模特主妇护士班主任.txt',encoding='utf-8') # 绝对路径打开f.close()f = open('模特主妇护士班主任',encoding=
2023-01-31

Python文件IO操作

文件IO常用操作:open打开read读取write写入close关闭readline行读取readlines多行读取seek文件指针操作tell指针位置打开操作:open(file, mode='r', buffering=-1, enc
2023-01-31

Python 操作.csv文件

import csvcsvfile = file('E:\\workspace\\data\\ex1.csv', 'rb')reader = csv.reader(csvfile)for line in reader:    print l
2023-01-31

Python之文件操作

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

Python的文件操作

读操作file = open('测试文件',mode='r',encoding='utf-8')print(file.read()) 写操作file = open('测试文件',mode='w',encoding='utf-8')file.
2023-01-30

Python--6 文件操作

文件通常用于存储数据或应用系统的参数。Python 提供了 OS、 os.path、 shutil 等模块处理文件, 其中包括打开文件、 读写文件、 复制和删除文件等函数。python文件操作基本流程: 1.打开文件,或者新建立一个文件2.
2023-01-30

python文件的操作

首先看看在pycharm输入文件句柄,怎样显示他的定义f = open('student_msg', encoding='utf-8', mode='a+') # 打开一个文件,赋值给fprint(type(f), f) # f文件句柄是
2023-01-31

python文件操作一

Python 提供了必要的函数和方法进行默认情况下的文件基本操作open()函数语法:File_object= open(file_name [, access_mode][, buffering])file_name:file_name变
2023-01-31

python文件操作二

1、常用函数:fileObject.read([size])size为读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个"\n"符号。代码示例1:with open("text.t
2023-01-31

python 文件操作2

继续讲解文件操作的其他内置方法读取文件句柄的指针指针,就是说,程序读取文件到哪一行了。f=open("Yesterday.txt",r,encoding="utf-8")print(f.tell())执行输出 0默认是从0行开始读取的。读取
2023-01-30

python操作Xml文件

一、简单介绍Xml是实现不同语言或程序进行数据交换的协议,跟json差不多,但是xml远远先于json出现,例如在很多传统的金融行业的很多系统接口还主要是xml格式。Xml的格式如下:2023-01-31

【Python】Python读写文件操作

原帖地址:http://blog.csdn.net/adupt/article/details/44356151.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录