您的位置:首页 > 编程语言 > Python开发

python基础---文件处理

2017-07-18 17:00 281 查看
文件处理

f=open(‘文件’,’r’) 打开一个文件
f.close() 关闭文件,相当于保存

1、字符编码

在文件处理过程中,首先有一个重要的概念,就是字符编码

字符编码:把人类的字符编译成计算机能认识的数字

字符编码表:就是一张字符与数字对应关系的表
ascii
gbk
utf-8 (硬盘中常用编码)
unicode (内存中常用编码)

unicode ---->encode(‘utf-8’) 编码----> bytes
bytes ----> decode(‘utf-8’)解码 ----> Unicode
原则:字符以什么格式编译的,就要以什么格式解码

python3中的字符串分为两种
x='egon' 默认存为unicode
y=x.encode('utf-8') 使用encode编码为bytes

python2中字符串也分为两种
x=u'egon' 加u表示存为Unicode格式,与python3的字符串一样
y='alex' 默认存为bytes

2、文件模式
r 文本模式的读,在文件不存在,不会创建新文件
w 文本模式的写,文件存在则清空,不存在则创建
a 文本模式的追加,文件存在光标跳到文件末尾,文件不存在创建
rb 即直接从硬盘中读取bytes
wb 以二进制写模式打开
ab 以二进制追加模式打开
r+ 读的时候可写
w+ 写的时候可读
a+ 追加时可读写

a. r模式
f.read() #一次性读取文本中全部的内容,以字符串的形式返回结果
read()的使用:
read(3) #文件打开方式为文本模式时,代表读取3个字符
#文件打开方式为b模式时,代表读取3个字节
#unicode格式中3个字节=1个字符

控制光标的移动(都是以字节为单位):
f.seek() #控制光标移动几个字节
有三种模式:
0 从首字节开始
1 b模式下运行,以当前光标所在的位置为参照物
2 b模式下运行,以最后一个字节为参照物
练习:模拟tail –faccess.log
# python3 tail.py -f access.log
import time
import sys

with open(r'%s' % sys.argv[2], 'rb') as f:
f.seek(0, 2)

while True:
line = f.readline()
if line:
print(line.decode('utf-8'),end='')
else:
time.sleep(0.2)

truncate() #文件的打开方式为可写,从文件开头开始截取,留下指定字节之后的字节

f.readline() #只读取文本第一行的内容,以字符串的形式返回结果
f.readlines() #读取文本所有内容,并且以数列的格式返回结果,一般配合for in使用
f.readble() #判断文件是否有读的权限,返回布尔值

b. w模式
f.write() #写入文件,换行需要手动写换行符\n
f.writelines() #一次写入多行

c. a模式
f.tell() #查看光标位置

with open(‘文件’,’w’,encoding=’utf-8’) as f:
f.write(‘11111\n’) #会把文件的内容赋值给f,执行完毕会自动close

python中把脚本后的参数传入脚本内的方法:
import sys
print(sys.argv)
一个cp文件的python小脚本
import sys

#python3 copy.py source.file target.file
if len(sys.argv) < 3:
print('Usage:python3 copy.py source.file target.file')
sys.exit()

#r'C:\Users\Administrator\PycharmProjects\python18期周末班\day3\test.jpg'
with open(r'%s' %sys.argv[1],'rb') as read_f,\
open(r'%s' %sys.argv[2],'wb') as write_f:

for line in read_f:
write_f.write(line)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  基础 python 文件处理