在 windows 系统下,我们通过 路径+文件名+扩展名的方式唯一标识一个文件,而在 Linux 系统下通过 路径+文件名唯一标识一个文件。

文件分类:文件主要可以分为文本文件二进制文件,常见的如记事本中的 xx.txt 的文件就是文本文件,而图片,音乐等就是以二进制方式保存的二进制文件。

python 文件操作:

def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

  • file :文件标识,通过 路径+文件名(扩展名)的方式指定
  • mode : 模式,读、写、追加、新建等。
  • encoding : 编码方式。

下面是 builtins.py 中对 open 的说明:

Open file and return a stream.  Raise OSError upon failure.
打开文件并返回流。 失败时引发OSError。 ... 可用的模式有: 'r' open for reading (default) # 只读
'w' open for writing, truncating the file first # 写入
'x' create a new file and open it for writing # 创建一个新文件,并写入
'a' open for writing, appending to the end of the file if it exists # 追加
'b' binary mode # 二进制模式
't' text mode (default) # 文本模式
'+' open a disk file for updating (reading and writing) # 打开磁盘文件进行更新(读写)
'U' universal newline mode (deprecated) # 通用换行模式
读取文件测试

在磁盘上准备一个待测试文本文件。



使用 open 方法读取文件。

f=open(r"F:\python test.txt","r",)
print(f.read())

pycharm报错:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 80: illegal multibyte sequence

看来open()默认的读取编码格式是“gbk”,报错信息中显示有无法解读的字节序列,那么我们把读取的编码格式指定为 “UTF-8” 就可以了。

f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read()) 输出:
If you put your mind to it, you can accomplish anything.
有志者,事竟成。

需要注意的是,用 f.read() 会将文本中的内容全部读取进内存中,如果文件内容很多将会占用大量的内存。python 中为文件对象 file 还提供了以下的几种读取方法。

  • file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。
  • file.readline():返回一行。
  • file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read(6))
输出:
If you f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.readline())
输出:
If you put your mind to it, you can accomplish anything. f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.readlines())
输出:
['If you put your mind to it, you can accomplish anything.\n', '有志者,事竟成。']

需要注意的是,文件在读取时读取的位置会被文件指针保存,方便下一次继续读取。可以通过 f.seek(偏移量,[起始位置]) 用来移动文件指针。

关闭文件:f.close()

在一个文件使用完之后一定要记得关闭文件。每个文件都会占用一个文件句柄(LInux下为文件描述符),如果不进行资源的释放会造成极大的浪费。另外文件打开后如果对文件进行了修改不会马上写回到文件中,如果没有手动关闭文件很可能修改过的数据就不会同步到文件中。

写入文件测试

覆盖写入。

f=open(r"F:\python test.txt","w",encoding='UTF-8')
f.write("写入测试")
f.close()
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read())
f.close() 输出:
写入测试

注意:在“w”模式下,如果文件不存在则会创建一个新文件,再进行写入操作。

追加写入。

f=open(r"F:\python test.txt","a",encoding='UTF-8')
f.write("追加测试")
f.close()
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read())
f.close() 输出:
写入测试追加测试

同 “w” 模式一样,如果文件不存在,会创建一个新的文件。

读写文件测试
f=open(r"F:\python test.txt","w+",encoding='UTF-8')
f.write("读写测试")
f.seek(0)
print(f.read())
f.close() 输出:
读写测试

同理,也可以使用 “a+” 追加读写的方式。

自动关闭文件

在某些程序中会对大量的文件进行打开和关闭的操作,我们手动的去关闭会很麻烦。因此,python 中提供了一种自动关闭文件的方法。

with open(r"F:\file","r") as f:
f.readline()

在 with 后加上文件操作,在执行完相应的语句后会自动将文件关闭。

python学习笔记(八)——文件操作的更多相关文章

  1. python学习笔记之文件操作(三)

    这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...

  2. python学习笔记4(文件操作)

    文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”)      直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...

  3. python学习笔记三 文件操作(基础篇)

    文件操作 打开文件 open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉]   w ...

  4. python学习笔记(三):文件操作和集合

    对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...

  5. Python学习笔记 - day5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  6. python学习笔记:文件操作和集合

    一.文件操作 文件读写步骤:有一个文件,打开文件,操作文件读写文件,关闭文件. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例) 模式 可做操作 若文件不存在 是否覆盖 r ...

  7. python学习笔记(六)---文件操作与异常处理机制

    文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...

  8. 我的Python学习笔记之文件操作

    一,Python的文件类型有两种 1.文本文件 2.二进制文件 文件的操作: 1.打开文件,获取文件的控制权 2.读写文件 3.关闭文件,释放文件的控制权,如果不释放控制权,那么其他程序就不能访问此文 ...

  9. python学习笔记(五)-文件操作2

    一.文件修改 现有文件file.txt,内容如下:二十四节气歌春雨惊春清谷天,夏满芒夏暑相连.秋处露秋寒霜降,冬雪雪冬小大寒.上半年逢六廿一,下半年逢八廿三.每月两节日期定,最多相差一二天.要求:将文 ...

  10. python学习笔记(四)-文件操作

    文件读写"""一.文件打开有3种方式 1.读 r #如果打开的文件的时候没有指定模式,那么默认是读 读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错 2.写 w ...

随机推荐

  1. Python:pandas(一)——常用、读写函数read_csv、read_excel、to_csv、to_excel

    学习自:pandas1.2.1documentation 0.常用 1)读写 ①从不同文本文件中读取数据的函数,都是read_xxx的形式:写函数则是to_xxx: ②对前n行感兴趣,或者用于检查读进 ...

  2. mysql-8.0.12 安装使用教程

    Microsoft Windows [版本 10.0.15063] (c) 2017 Microsoft Corporation.保留所有权利. C:\WINDOWS\system32>D: D ...

  3. sklearn中predict_proba的用法例子(转)

    predict_proba返回的是一个n行k列的数组,第i行第j列上的数值是模型预测第i个预测样本的标签为j的概率.所以每一行的和应该等于1. 举个例子 >>> from sklea ...

  4. 使用windows自带linux子系统开发esp32

    步骤: 1.打开windows商店,搜索ubuntu,安装18.04版本. 2.控制面板 /程序和功能 /打开或关闭windows功能 3.关机重启 4.打开刚安装得ubuntu,设置用户名和密码. ...

  5. 实例化类对象及类的属性set方法使用不当

    类的属性中set方法操作数据库,新建类对象并给其赋值时总会触发该set方法,而导致不期望的错乱: 库位类Storage,其中传感器状态SensorStatus和逻辑状态LogicStatus有一定的关 ...

  6. 全面解读 AWS Private 5G 的革新理念

    目录 目录 目录 前言 近几年 AWS 在 5G ICT 领域的部署 AWS 与 Verizon 合作推出的 Private MEC 解决方案 AWS 与 Vodafone Business 合作推出 ...

  7. egg-jwt的使用

    安装 npm install egg-jwt --save 配置 // config/config.default.js config.jwt = { secret: 'zidingyi', // 自 ...

  8. LGB+XGB+CNN一般写法

    现在的比赛,想要拿到一个好的名次,就一定要进行模型融合,这里总结一下三种基础的模型: - lightgbm:由于现在的比赛数据越来越大,想要获得一个比较高的预测精度,同时又要减少内存占用以及提升训练速 ...

  9. LGP5664题解

    厉害. 对于每一列选的数最多占一半,我们得设计一个三维 DP.然而状态刚好够,但是转移明显炸了(而且似乎还需要多项式?) 考虑正难则反,DP 不合法的方案数.总方案数很好算. 发现不合法的方案数只有某 ...

  10. LGCF235B题解

    简单期望/fad 题意明确,不说了. 对于高次期望,一个套路的方法是维护低次期望(?) 考虑 dp,设 \(dp1[i]\) 为前 \(i\) 次点击中 所有连续的 \(O\) 的长度之和,\(dp2 ...