python-文件
python3中的默认的编码解码方式为utf-8
windows默认使用的编码方式为gbk
当读取一个windows文件(gbk),可以指定读取时使用的编码encoding=(‘gbk’)或者不需要指定
with open(‘a.txt’,‘r’,‘encoding=(gbk)’) as f:这样就能读取出a.txt文件的字符串数据
当python写入文件时,默认使用的utf-8编码,在win上打开会乱码,因为win默认编码是gbk
文件操作
文件操作3步曲:打开–>操作—>关闭
r(readonly)默认参数
-只能读,不能写
-读取文件不存在 会报错
w
-写文件
-文件存在的时候,会清空文件的内容并写入新的文件内容
-文件不存在的时候,会创建新的文件并写入内容
a
-写文件(write only)
-写:不会清空文件内容,会在文件末尾追加
-写:文件不存在的时候,不会报错,会创建新文件并写入内容
“+” 表示同时读写某个文件:
w+
-r/w
-文件不存在 不报错 会创建新文件并写入
-会清空文件
r+
-r/w
-不会清空文件
-文件不存在 报错
a+
同a
打开文件
fileobj = open(filename, mode)
eg:
f = open('/tmp/passwd','w+')
open()调用参数的解释:
* fileobj 是open()返回的文件对象;
* filename 是该文件的字符串名;
* mode 是指明文件类型和操作的字符串
具体操作
print(f) ##打印文件
# 写文件
print(f.read())
f.write('python')
# 读文件
# 判断文件对象拥有的权限
print(f.readable())
print(f.writable())
print(f.tell())
print(f.read())
# 告诉当前文件指针所在的位置
print(f.tell())
print(f.read())
print(f.tell())
f.write('westos')
print(f.tell())
print(f.read())
读取
f.read(n) ##n为读取的字节数
f.readline() ##按行读取
##默认情况下读取文件的内容 小的文件:直接用read读取即可,如果是一个大文件(文件大小>=内存) readline()
##注意: readline()结尾, 注意每次读取出来的数据都会有一个\n 所以我们可以使用strip()方法来去掉\n或者空格
f.readlines() ##读取所有类容以列表形式存放
写入
f.write(要写入的内容)
f.writelines(可迭代对象) ##可写入多行数据
遍历
for x in f:
for x in f.readluines:
输出文件内容
指针
f.tell() ##获取指针
f.seek() ##移动文件zhizhen
seek():指针的移动
#第一个参数:偏移量 >0:向后移动; <0:向前移动
#第二个参数:
#0:移动到文件开头
#1:当前位置
#2:移动到文件的末尾
如果读取的是 图片 音频 视频(非纯文本文件)
需要通过二进制的方式读取和写入
-读取纯文本文件
r r+ w w+ a a+ == rt rt+ wt wt+ at at+
-读取二进制文件
rb rb+ wb wb+ ab ab+
关闭文件
关闭文件将缓存区写入硬盘
##打开必须关闭
f.close()
上下文管理器
打开文件 执行完with语句后 自动关闭文件
with open(文件地址,模式) as f:
##模式默认r
eg:
f = open('/tmp/passwd','w+')
with open('/tmp/passwd') as f:
print(f.read())
print(f.closed)