首页 / PYTHON / python文件处理
python文件处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python文件处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4144字,纯文字阅读大概需要6分钟。
内容图文
第1章 介绍:
Ø 计算机系统分为:计算机硬件,操作系统,应用程序
我们用python语言或着其他语言编写的应用程序想把数据永久保存下来,必须要保存到硬盘中,这就涉及到应用程序操作硬件,应用程序是无法操作硬件的,这就需要操作系统来完成,操作系统吧复杂的硬件操作封装成简单的借口给用户或者应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘的概念,用户或者应用程序通过操作文件,可以将自己的数据永久保存下来
第2章 什么是文件?
文件是操作系统为用户或者应用程序提供一种操作硬盘的虚拟单位
第3章 为何要用文件?
为了存取硬盘上的数据
第4章 如何用文件?
4.1操作文件的流程:
1. 打开文件,得到文件句柄并赋值给一个变量
f=open('t1.py',mode='r')
2. 通过句柄对文件进行操作
data=f.read()
3. 关闭文件
f.close()
4. 正确打开文件的方式:
with open('t1.py',mode='r',encoding='utf-8') as f :
4.2文件的打开模式:
Ø 控制文件操作方法的模式:
文件句柄=open(‘文件路径’,‘模式‘)
r:只读模式【默认模式,文件必须存在,不存在则抛出异常】
查看文件是否可读
with open('t1.py',mode='r',encoding='utf-8') asf :
print(f.readable())
查看文件是否可写
with open('t1.py',mode='r',encoding='utf-8') asf :
print(f.writable())
一次读一行
with open('t1.py',mode='r',encoding='utf-8') asf :
print(f.readline())
一次读取每一行
with open('t1.py',mode='r',encoding='utf-8') asf :
print(f.readlines())
w:只写模式【不可读,不存在则创建,存在则清空内容】
写文件
with open('a.py',mode='w',encoding='utf-8') asf :
f.write('111')
a:只追加模式【不可读,不存在则创建,存在则只追加内容】
Ø 控制文件操作内容格式的模式:
t:无论读写都是以字符串str为单位的
b:无论读写都是以二进制bytes为单位的,对于非文本文件,只能用b模式,b表示以字节的方式操作,(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的编码,图片文件的jgp格式,视频文件的avi格式)
with open('a.txt',mode='rb') as f:
data=f.read()
print(data)
b'123\n345'
第5章 练习:
5.1利用b模式,编写一个cp工具,即可拷贝文件又可拷贝视频图片等文件
src_file=input('源文件地址: ').strip()
dest_file=input('目标文件地址:').strip()
with open(r'%s' %src_file,'rb') as f ,open('%s' %dest_file,'wb') as f1:
data=f.read()
f1.write(data)
import sys
if len(sys.argv) != 3:
print('usage:cp source target')
sys.exit()
source_file,target_file=sys.argv[1],sys.argv[2]
with open(source_file,'rb') as read_f,open(target_file,'wb') as write_fL:
for line in read_f:
write_f.write(line)
第6章 文件内光标移动
6.1t模式下的read(3)
文件打开方式为文本模式时,代表读取3个字符
with open('a.txt',mode='rt',encoding='utf-8') as f :
data=f.read(3)
print(data)
你好啊
文件打开方式为b模式时,代表读取3个字节
with open('a.txt',mode='rb') as f :
data=f.read(3)
print(data)
b'\xe4\xbd\xa0'
6.2其余文件内光标移动都是以字节(bytes)为单位如seek,tell,truncate
Ø seek:
参数1:控制移动的字节个数
参数2:控制参照的位置
0(默认的):参照文件开头
1:参照指针当前所在位置
2:参照指针文件末尾
注意:只有0模式可以在t模式下使用,1和2只能在b模式下使用
文本内容为:你好啊123nihao,需求取出啊后面的字符
with open('a1.txt',mode='rt',encoding='utf-8') as f :
f.seek(6,0)
print(f.read())
Ø truncate
是截断文件,所以打开文件方式必须可写,但是不能用w或者w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+模式下测试效果
with open('a1.txt',mode='at',encoding='utf-8') as f :
f.truncate(3)
Ø tell
已文件开头为参照,查看当前指针位置
with open('a1.txt',mode='rb') as f :
f.seek(6,2)
print(f.tell())
6.3练习:给予seek实现tail –f功能
with open('access.log','rb') asf :
f.seek(0,2)
while True:
line=f.readline()
ifline == 0:
pass
else:
print(line.decode('utf-8'),end='')
第7章 文件修改的两种方式
文件的数据是存放于硬盘上的,因为只存在覆盖,不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:
7.1方式一:将硬盘存放的该文件的内容全部加在到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘
缺点:会过多占用内存
with open('a.txt',mode='rt',encoding='utf-8') asf :
data=f.read()
data=data.replace('alex','dsb')
with open('a.txt',mode='wt',encoding='utf-8') asf :
f.write(data)
7.2方式二:将硬盘存放的该文件的内容一行一行的读入内存,修改完毕就写入新文件,最后用新文件覆盖原文件
import os
with open('a.txt',mode='rt',encoding='utf-8') asread_f,\
open('.a.txt.swap',mode='wt',encoding='utf-8') aswrite_f :
forline inread_f:
write_f.write(line.replace('dsb','alex'))
os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')
内容总结
以上是互联网集市为您收集整理的python文件处理全部内容,希望文章能够帮你解决python文件处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。