python只读方式打开文件可以不close吗_python 文件操作详解

本文详细介绍了Python文件操作,包括打开、读取、写入和关闭文件。通过实例展示了不同打开模式的效果,如'r'(只读)、'w'(只写,会截断文件)、'a'(追加)、'r+'(读写)等,并解释了在不同模式下尝试读写文件的行为。同时,文章提供了读取和写入文件的多种方法,如read()、readline()、readlines()、write()和writelines()。最后,讨论了如何处理大文件时避免一次性读取整个文件的方法。
摘要由CSDN通过智能技术生成

python 文件操作详解

文件操作是编程中必不可少的, 配置文件, 数据存储都是对文件操作; 按文件操作与格式主要内容如下图:

文件基本操作为打开, 读取, 写入, 关闭, 我们按这个过程来详解讲解.

1. 一个例子搞定打开, 读取与关闭:

准备工作:

1 > 新建文件: E:\workdir\readme.txt(或者自己准备一个其他文本文件);

2 > 文件添加一行内容: this is test

直接上代码, 有个基本认识:# 文件路径

path=r'E:\workdir\readme.txt'

# 打开文件

f=open(path)

# 读取文件

txt=f.read()

print(txt)

# 关闭文件

f.close()

输出结果: this is test;

感觉文件操作太简单了.

那么问题来了: 如果文件不存在如何创建文件? 如何写文件? 这种方式能够写入吗?

我们来看文件打开方式.

2 文件打开方式详解:

2.1 open 方法详解:

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

返回一个文件 IO 对象, 如果文件不存在或者打开出错触发异常;

主要参数:参数说明file文件路径

mode打开方式,默认只读方式

encoding打开文件编码格式

其他参数暂时使用默认值.我们再来看下文件打开方式:打开方式说明‘r‘只读方式 ,不能写入

‘w‘只写方式打开,文件不存在创建文件,文件存在截断文件

‘a‘只写方式打开,如果文件存在,再文件尾部开始写入

‘+‘读写方式打开

‘b‘二进制方式打开,例如图片; ‘rb‘,‘wb‘,‘ab‘,上面操作类似

2.2 打开方式测试:

工作目录:'E:\workdir';

case1: 文件不存在创建文件:# 该文件不存在

wfpath=r'E:\workdir\testw.txt'

f=open(wfpath,'w')

# 写入一行

f.write('python')

f.close()

查看 E:\workdir\, 创建文件 testw.txt;

case2: 文件存在只写方式打开:

准备工作:

1 > 在'E:\workdir'下创建文件: test1.txt;

2 > 写入一行文本:'abcd1234';

测试:# 文件存在

fpath=r'E:\workdir\test1.txt'

f=open(fpath,'w')

f.close()

查看 r'E:\workdir\test1.txt', 内容被清空;

case3: 只写方式打开, 能否读取:fpath=r'E:\workdir\test1.txt'

# 文件只写方式打开

f=open(fpath,'w')

# 进行读取

f.read()

f.close()

结果:UnsupportedOperationTraceback(most recent calllast)

in

3fpath=r'E:\workdir\test1.txt'

4f=open(fpath,'w')

---->5f.read()

6f.close()

UnsupportedOperation:notreadable

只写方式打开不能写入.

case4: 只写方式打开, 尾部开始写入:

使用'w'方式打开文件, 文件会被裁剪, 如何在尾部追加数据? 使用'a'模式:# 先写入 abc, 关闭重新打开文件, 在写入 123

fpath=r'E:\workdir\testa.txt'

# 只写方式打开

f=open(fpath,'w')

f.write('abc')

f.close()

# 追加方式打开, 文件尾开始写入

fpath=r'E:\workdir\testa.txt'

f=open(fpath,'a')

f.write('123')

f.close()

文件内容: abc123;

cast5: 读写方式打开:模式说明‘r+‘读写方式打开,从文件头开始读写

‘r+‘读写方式打开,文件被清空

‘a+‘追加方式读写打开,从文件尾开始读写# 文件路径, 文件内容:'this is test'

path=r'E:\workdir\readme.txt'

# 打开文件

f=open(path,'r+')

line=f.read()

print(line)

# 写入文本

f.write('end')

# 关闭文件, 文件尾写入 end

f.close()

结果: 读取文件内容, 并在文件尾插入 end;

大家可以尝试测试另外两种读写模式.

3. 文件读取

读取文件方法:方法说明read(size=-1, /)读取指定字节或者读取完成,默认读取完

readline(size=-1, /)读取一行

readlines(hint=-1, /)读取多行,默认读取完,返回每行组成列表

环境准备: readme.txt 中添加四行:

: 语法

: 环境

: 逻辑处理

: 数据结构

case1: 一次读取完path=r'E:\workdir\readme.txt'

f=open(path)

lines=f.read()

print(lines)

case2: 逐行读取path=r'E:\workdir\readme.txt'

f=open(path)

whileTrue:

#读取完, 读取内容为''

line=f.readline()

ifline:

print(line,end='')

else:

break

case3: 按行一次读完path=r'E:\workdir\readme.txt'

f=open(path)

lines=f.readlines()

print(lines)

lines 为列表;

case4: 使用 for 循环逐行读取:

如果文件过大, 一次读取会占用大量内存, 所以一般情况下, 我们使用 for 遍历文件:path=r'E:\workdir\readme.txt'

f=open(path)

forlineinf:

print(line,end='')

4. 文件写入:方法说明write(text, /)写入字符串,返回写入字节数

writelines(lines, /)写入多行

实际操作:#'\n'换行符

info=['java\n','c++\n']

# 只写方式打开文件

path=r'E:\workdir\testw.txt'

f=open(path,'w')

# 写入一行

f.write('python'+'\n')

# 写入多行

f.writelines(info)

f.close()

到这里文件基本操作我们就介绍完了, 在专栏中我们再来看如何使用.

来源: http://www.bubuko.com/infodetail-2899944.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值