python引用文件 mode写在后面还是前面_python专题文件操作

一 前言

本篇文章主要对文件操作进行说明,知识追寻者创作必属精品,读完本篇你将获得基础的文件操作能力,深入理解文件操作API,基础真的很重要,不管学什么知识,故看知识追寻者的专题系列真的很不错。

二 open函数介绍

2.1 open函数概览

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

file 可以是给定的文本文件或者是文件字符串形式的名称

mode 模式是操作文件以何种方式打开,比如读,写模式,读取为二进制等;

buffering 是缓存机制(可选参数),设置为0为关闭缓存;设置为1表示行缓存,必须是在文本模式下执行;设置值 大于1 表示固定值的块缓存;不给定参数,系统会设置默认缓存,通常二进制文件是固定大小的块缓存,大小为4096或者8192;

encoding 表示设置编码或者解码,默认的编码解码是跟随平台,必须是文本模式下可执行;用户可以自定义,

errors 可选操作,表示指定如何处理编码异常;如果设置为ignore,可能会造成数据丢失;

newline 表示对换行的具体操作,比如 '\n' , '\r' , '\n\r',必须在文本模式下进行;

closefd 如果设置会False 当文件关闭时,文件的描述会一直打开,造成内存泄漏;通常会在open方法前面加with解决此类问题,否则需要调用close()方法关闭句柄;

2.2 mode 模式介绍

基础模式如下,在不冲突的情况下可以对文件的模式进行自由组合,比如 wb表示以二进制文件形式打开文件进行写操作;

模式

含义

t

文本模式 (默认)

b

二进制模式

w

写入模式

x

创建一个新的文件,并且写入数据

a

在已经存在的文件末尾追加内容

+

打开磁盘文件对其进行更新操作,可以是读或者写

U

另起一行模式,已经过时,会引起异常

2.3 文件方法介绍

方法名称

方法说明

read(size)

读取文件,size为可选参数为-1或者省略表示读取全部内容

readline()

从文件中读取一行

readlines()

读取多行

write(string)

写入字符串到文件,返回字符数

tell()

返回文件当前位置

close()

关闭文件

flush()

手动冲刷缓存至底层

三 读文件操作

3.1 准备工作

在工程目录下的base目录文件夹下创建一个dir文件夹,专门用于存储文件;创建一个zszxz.txt 文件 内容如下

我以星辰送大海

我以盏杯敬明月

3.2 读取整个文件

指定文件路径path

指定模式r 为读操作

指定编码格式为utf-8

调用read()方法

path = "dirs/zszxz.txt"

with open(path, 'r', encoding='UTF-8') as file_obj:

content = file_obj.read()

print(content.rstrip())

输出结果

我以星辰送大海

我以盏杯敬明月

3.3读取单行

使用readline()方法会读取单行,对于整个文件需要进行多次读取;

path = "dirs/zszxz.txt"

with open(path, 'r', encoding='UTF-8') as file_obj:

content_1 = file_obj.readline()

print(content_1.rstrip())

content_2 = file_obj.readline()

print(content_2.rstrip())

输出结果

我以星辰送大海

我以盏杯敬明月

3.3 多行读取

使用readlines()方法返回一个列表

使用循环遍历读取

path = "dirs/zszxz.txt"

with open(path, 'r', encoding='UTF-8') as file_obj:

lines = file_obj.readlines()

for line in lines:

print(line.rstrip())

输出结果

我以星辰送大海

我以盏杯敬明月

3.4 按行读取

直接对文件进行迭代,能简化代码,提高效率;

path = "dirs/zszxz.txt"

with open(path, 'r', encoding='UTF-8') as file_obj:

for line in file_obj:

print(line.rstrip())

四 写操作

path 指定文件路径

mode 模式为w 表示写入数据

执行write()方法

返回count为写如的字符数

写入全部数据

# -*- coding: utf-8 -*-

path = "C:\mydata\generator\zszxz.txt"

with open(path,'w',encoding='UTF-8') as file_obj:

count = file_obj.write("happily reading the article of zszxz")

print(count)

返回结果如下,说明写入了36个字符;

36

五 获取当前位置

path 指定文件路径

mode 模式为 r表示读

调用readline()方法 表示读取行

调用tell()方法获取读取文件当前位置

path = "dirs/zszxz.txt"

with open(path, 'r', encoding='UTF-8') as file_obj:

line = file_obj.readline()

position = file_obj.tell()

print(position)

print(line.rstrip())

输出结果

23

我以星辰送大海

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值