文件操作是编程中必不可少的,配置文件,数据存储都是对文件操作;按文件操作与格式主要内容如下图:
10多年的子长网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整子长建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“子长网站设计”,“子长网站推广”以来,每个客户项目都认真落实执行。
文件基本操作为打开,读取,写入,关闭,我们按这个过程来详解讲解。
准备工作:
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;
感觉文件操作太简单了。
那么问题来了:如果文件不存在如何创建文件?如何写文件?这种方式能够写入吗?
我们来看文件打开方式。
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',上面操作类似 |
工作目录:'E:\workdir';
#该文件不存在
wfpath = r'E:\workdir\testw.txt'
f = open(wfpath, 'w')
#写入一行
f.write('python')
f.close()
查看E:\workdir\,创建文件testw.txt;
准备工作:
1>在'E:\workdir'下创建文件:test1.txt;
2>写入一行文本:'abcd1234';
测试:
#文件存在
fpath = r'E:\workdir\test1.txt'
f = open(fpath, 'w')
f.close()
查看r'E:\workdir\test1.txt',内容被清空;
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
只写方式打开不能读取。
使用'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;
模式 | 说明 |
---|---|
'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;
大家可以尝试测试另外两种读写模式。
读取文件方法:
方法 | 说明 |
---|---|
read(size=-1, /) | 读取指定字节或者读取完成,默认读取完 |
readline(size=-1, /) | 读取一行 |
readlines(hint=-1, /) | 读取多行,默认读取完,返回每行组成列表 |
环境准备:readme.txt中添加四行:
1:语法
2:环境
3:逻辑处理
4:数据结构
path = r'E:\workdir\readme.txt'
f = open(path)
lines = f.read()
print(lines)
path = r'E:\workdir\readme.txt'
f = open(path)
while True:
#读取完,读取内容为''
line = f.readline()
if line:
print(line, end='')
else:
break
path = r'E:\workdir\readme.txt'
f = open(path)
lines = f.readlines()
print(lines)
lines为列表;
如果文件过大,一次读取会占用大量内存,所以一般情况下,我们使用for遍历文件:
path = r'E:\workdir\readme.txt'
f = open(path)
for line in f:
print(line, end='')
方法 | 说明 |
---|---|
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()
到这里文件基本操作我们就介绍完了,在专栏中我们再来看如何使用。