python文件操作详解
admin
2023-07-14 13:04:17
0

文件操作是编程中必不可少的,配置文件,数据存储都是对文件操作;按文件操作与格式主要内容如下图:
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()

结果:

UnsupportedOperation                      Traceback (most recent call last)
 in 
      3 fpath = r'E:\workdir\test1.txt'
      4 f = open(fpath, 'w')
----> 5 f.read()
      6 f.close()

UnsupportedOperation: not readable

只写方式打开不能读取。

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+' 读写方式打开,从文件头开始读写
'w+' 读写方式打开,文件被清空
'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中添加四行:

1:语法
2:环境
3:逻辑处理
4:数据结构

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)
while True:
    #读取完,读取内容为''
    line = f.readline()
    if line:
        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)
for line in f:
    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()

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

相关内容

热门资讯

特朗普:正致力于与伊朗达成协议... 特朗普在《纽约邮报》一档播客访谈节目中称,他正与伊朗磋商一项协议,伊朗已同意不再谋求拥有核武器。他表...
不接壤的日菲为何偷划海界? 日菲近日发表联合声明,宣称就“划定两国专属经济区和大陆架的海洋边界”启动正式谈判。两个隔海相望的国家...
凤凰晚报丨从钳工到老戏骨,魏宗... 今日人物【从钳工到老戏骨,魏宗万用一生诠释“戏比天大”】6月1日,表演艺术家魏宗万在上海逝世,享年8...
科威特称伊朗袭击致63人受伤 科威特卫生部门3日称,伊朗当天对科威特的袭击已造成63人受伤,相关部门已启动紧急应对预案,并在全国范...
日本标榜“和平国家”却行扩军备... 今年是东京审判开庭80周年,世界正回望历史、反思战争罪责、捍卫二战后来之不易的国际秩序之际,日本却迈...
浙江杨梅即将大规模上市,如何破... “我们现在的压力很大。”5月底,浙江余姚杨梅产区丈亭镇副镇长林宇站在一片杨梅林前对第一财经表示,当地...
致5死2伤!韩国就韩华航空航天... 【环球网报道 记者 姜蔼玲】据韩联社6月1日报道,针对位于韩国大田的韩华航空航天公司发生爆炸致7人伤...
黄河科技学院2026年招生简章 长按图片识别二维码或点击 “阅读原文” 查看电子招生简章。
医路起航,从“心” 开始!黄河... 6月1日上午,黄河科技学院附属医院2022级临床医学本科实习生入院岗前培训在大医讲堂顺利举办。院领导...
问题居然在实体卡槽上!美版iP... 6月2日消息,日前,又有博主提前把还没发布的iPhone 18 Pro电池参数给曝光了出来,根据爆料...