初学Python——文件操作

一、文件的打开和关闭

1.常用的打开关闭语句

f=open("yesterday","r",encoding="utf-8")   #打开文件
f,close()   #关闭文件

第一行是打开名为“yesterday”的文件,只读属性,编码方式为utf-8。如果没有指定文件打开方式,默认只读“r”,如果没有指定编码方式可能会部分乱码。

第二行是关闭文件

2.with as语句

目的:为了防止程序员打开文件后忘记关闭文件

with open("yesterday","r",encoding="utf-8") as f:
    <代码段>

3.文件打开方式

打开方式 是否可读 是否可写 是否可创建 是否会覆盖 特点 建议
r 只读,安全 推荐
r+ 追加 有时部分覆盖 容易写入出错 不建议
w 全覆盖 只写 谨慎
w+ 全覆盖
只写

打开文件即清空


不建议

数据非常不安全

a 追加 追加不覆盖 推荐
a+ 追加 全能且安全 推荐

说明一下:

(1)r:如果只有读取数据的需求,建议用这种,杜绝了对数据破坏的可能。

(2)r+:之所以不推荐它是因为,写入数据的行为难以捉摸,并且可能会因此破坏数据,造成损失。如果不是十分清楚它的习性,不要用它。

写入方式:有时覆盖,有时追加。

当写入操作前一步是读取的时候,这时候不会覆盖数据,在最后追加:

f=open("yesterday3","r+",encoding="utf-8")
print(f.readline())  #读取一行数据
f.write("nihao")     #写入数据
f.close()

执行前的文件:

执行后的文件:

当写入操作前一步不是读取的时候,覆盖写入数据,从光标处开始覆盖部分数据:

f=open("yesterday3","r+",encoding="utf-8")
print(f.tell())          #获取光标当前位置
f.write("nihao")    #写入数据
f.close()

执行后:

所以,尽量不要用它

(3)w:只能写入数据,并且覆盖之前的全部数据。由于会对之前数据造成丢失,所以使用它时要谨慎。可创建的意思是如果指定打开的文件不存在,则创建一个文件。

(4)w+:不建议此种方式。每次打开文件都会对数据进行清空,即使不进行任何操作。可以这样理解:每次打开时,都会重新创建一个同名文件并覆盖,初始情况下当然是空的。可读可写可创建。

(5)a:可追加,可创建。保证了数据的安全,不会覆盖之前的数据

(6)a+:全能型选手,啥活都能干,而且数据安全,不会覆盖。但是有个特点,文件打开时光标起始位置在最后面,所以导致读取不到数据。(其他方式打开文件时,光标都在开头位置)

来测试一下:

f=open("yesterday3","a+",encoding="utf-8")
print(f.tell())           #获取光标当前位置
print(f.readline())   #读取一行数据
f.close()

运行结果:

当前光标位置327(字符),没有读取到数据。怎么办?将光标移动到开头就好了

f.seek(0)  #将光标移动到开头位置

顺利运行:

4. f  是什么?

f 叫做文件句柄。是文件的内存对象,包含文件的大小、文件名、硬盘中的起始位置等信息封装成了一个句柄。

二、文件的写和读

1.写

f.write("123\n") 

写入数据时,只能以字符形式,如果是int会出错,并且换行符“\n”也占有相应的字符。

2.读

注意:任何时候进行读取操作,都要看清楚当前光标的位置,才能读到想要的数据。

①将所有数据一次性全部读出来(一般不用,不适合读取大文件)

data=f.read() #data是一个字符串变量
print(data)

print(f.read())    #如果这三行代码放到一起,会发现第三行代码读不出来数据,而且也没有报错,实际上是没有注意光标的位置,要解决很简单,只要将光标移动到初始位置就好了

②只读取有限个字符

print(f.read(5)) #从光标处开始只读取5个字符

③读取一行数据

print(f.readline())  #从光标处开始读取一行数据

④readlines()

也是读取全部数据,但有所不同

a=f.readlines() 

a是一个列表,文件中每一行数据都转化成列表的元素。

⑤循环读取数据

for i in range:
   print(i)

一行一行地读取数据,读完整个文件。推荐用这种方式,内存中始终只保存一行的数据,可以读大文件。

三、其他常用操作

1.查看当前光标位置

print(f.tell())

2.移动光标位置

f.seek(0)    #将光标位置移动到开头
f.seek(10)  #移动到第10个字符的位置

3.打印文件的编码

print(f.encoding)

4.判断光标是否可以移动

print(f.seekable())

在linux系统一切皆文件,终端设备文件不能移动光标

5.强制刷新

print(f.flush())

功能是,强制、立即将在此之前写入的数据写入到硬盘中。

在计算机中,往硬盘里写入数据通常不是当即发生的,写入(保存)后,操作系统会给人反馈说,已经将数据存了进去,但实际并没有立即写入,而是现将其存入系统缓存中,等到操作系统认为合适的时候再一次性写入进去。至于为什么这么做,我掌握到的有两点原因:一是提高系统运作效率,由于硬盘读写速度慢,整个程序会因为这个操作变得很慢,卡在这里,整个系统的运作效率很低;二是保护硬盘,用户可以很频繁地执行写入操作,如果硬盘也这么做(跟用户同步),硬盘寿命会大大降低。

所以,flush()方法的作用是立刻刷新硬盘的数据,将之前写入的数据立刻写入硬盘中。

6.判断文件是否关闭

当同时打开的文件很多时,可能不太清楚哪些文件关闭了,哪些文件没有关,可以用closed()方法检测一下

print(f.closed())

7.清除文件数据

f.truncate(10)

除了前10个字符,清空文件所有数据(文件打开方式不可以是“r”,最好是“a”)

清除操作跟当前光标位置无关。如果括号内不写数据,不做任何操作

四、二进制文件

打开方式:“rb”(只读),“wb”(只写),“ra”(追加)

什么时候会用到二进制打开方式呢?

1.网络传输只能用二进制(至少在Python3.0)

2.操作二进制文件(如果用字符形式可能会出错)

原文地址:https://www.cnblogs.com/V587Chinese/p/8799277.html

时间: 2024-10-29 14:25:02

初学Python——文件操作的相关文章

Python文件操作及seek偏移详解

本文和大家分享的主要是python中文件操作及seek偏移相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.Python文件操作中的编码 本次测试是基于Python 2.7.12  OS:Ubuntu 16.04  pycharm环境,以及Win7下2.7.12; 首先说下汉字在文件中占用的字节数,这个先看以下实验(Win7)下 因为Linux下不支持gbk,本文不讲utf-8 ,gbk编码具体知识.本次实验只讲解python在使用utf-8和gbk编码时,对汉字占用的字节有所不

python 文件操作seek() 和 telll() 自我解释

python 文件操作seek() 和 telll()  自我解释 file.seek()方法格式: seek(offset,whence=0)   移动文件读取指针到制定位置 offset:开始的偏移量,也就是代表需要移动偏移的字节数. whence: 给offset参数一个定义,表示要从哪个位置开始偏移:0代表从文件开头算起,1代表开始从当前位置开始算起,2代表从文件末尾开始算起.当有换行时,会被换行截断.                        seek()无返回值,故值为None

关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折腾的序幕 db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() 稍微查询一下就能了解到 tempfile是一个临时文件模块. 包含了一些临时文件的操作 tempfile.mkstemp() 在很老很老的python版本的时候,第一个参数是

Python基础篇【第2篇】: Python文件操作

Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说:1. 打开文件 2.操作文件 3.关闭文件 1. 打开文件.关闭文件 Python中使用open函数打开一个文件,创建一个file操作对象. open()方法 语法: file object = open(file_name [, access_mode][, buffering]) 各个参数的细

Python文件操作与函数目录

文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 Python函数——命名空间与闭包 Python函数——闭包延迟绑定 Python函数——装饰器 Python函数-列表推导式.生成器与迭代器 练习题 Python文件与函数练习题 案例 python函数练习——个人信息修改 Python函数案例——员工信息管理 原文地址:https://www.c

第六章、Python文件操作

第六章.Python文件操作 Python可以对文件进行查看.创建等功能,可以对文件内容进行添加.修改.删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除了file函数. 一.Python文件打开方式 文件句柄 = open('文件路径','打开模式') Nginx_Conf = open('nginx.conf','r',encoding='utf-8') Ps:文件句柄相当于于变量名,文件路径可以写为绝对路径

Lesson 024 —— python 文件操作

Lesson 024 -- python 文件操作 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法. open() 函数常用形式是接收两个参数:文件名(file)和模式(mode). open(file, mode='r') 完整的语法格式为: open(file, mode='r',

3 Python文件操作

Python文件操作 open 以什么编码方式存储文件,就以什么编码方式打开 f = open('d:\模特主妇护士班主任.txt',encoding='utf-8') # 绝对路径打开 f.close() f = open('模特主妇护士班主任',encoding='utf-8') # 相对路径打开 f.close() with open('log',encoding='utf-8') as f: # 此方法常用 不用进行close 读 read # r 以str的方式读出 f = open(

Python 文件操作Error: binary mode doesn&#39;t take an encoding argument

Python 报错:ValueError: binary mode doesn't take an encoding argument 在运行文件操作相关功能时报错:ValueError: binary mode doesn't take an encoding argument 上代码: >>> with open("course_info","rb+",encoding="utf-8")as f: #rb+操作时不支持指定e