8,文件的操作

绝对路径:从根目录一直找到文件。

相对路径:从当前文件夹找到文件。

在文件操作中,凡是mode = 带b的,可以不用写encoding

f1 = open():默认需要手动关系文件句柄

f1.close

f1 = open('护士学生空姐班主任.txt',encoding='utf-8',mode='r')
count = f1.read() #用read打开很容易让内存瞬间崩溃,小容量的文件可以用read
print(count)
f1.close() # 必须手动关闭内存空间。

在python中打不开文件的错误原因。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
编码错误:文件存储时编码方式与文件打开时的编码方式不一致。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf
in position 0: invalid start byte

打不开文件可以用两种方法。

第一种: 加r

f1 = open(r'D:\1\张11.txt',encoding='gbk',mode='r')
print(f1.read())
f1.close()

第二种:加\

f1 = open('d:\\1\张11.txt',encoding='gbk',mode='r')
print(f1.read())#用read打开很容易让内存瞬间崩溃,小容量的文件可以用read

f1.close()

 

文件操作有哪些?

r 读模式

read

f1 = open('张11',encoding='utf-8')#默认只读,可以不用谢mode = ‘r’
print(f1.read())#
f1.close()
print(f1)

read()

f1 = open('张11',encoding='utf-8')
print(f1.read(2))#从1开始,找到最后。
f1.close()

readline()

f1 = open('张11',encoding='utf-8')
print(f1.readline())
print(f1.readline())#按行读取,每读取一行,就复制一行。
print(f1.readline())
f1.close()

readlines()

f1 = open('张11',encoding='utf-8')
print(f1.readlines())#将每一行的到最后,添加一个str的换行符,将这几行内容,以列表的形式,返回出来。
f1.close()

for循环去查

f1 = open('张11',encoding='utf-8')
for i in f1:#循环去查
    print(i)
f1.close()

 rb模式:

非文字的文件的读取写入。

f1 = open('11.jpg', mode='rb')  #在别的路径打开一个文件,rb模式,默认是bytes类型
count = f1.read() # 把f1都出来的内容赋值给count
print(count)
f1.close() #关闭文件
f2 = open('235.jpg',mode='wb')#在新建一个235的空白文件
f2.write(count)#将count内容,写入f2.

r+模式 r(直读)(+)在添加个写的功能

先读后写。

f1 = open('张11',encoding='utf-8',mode='r+')
print(f1.read())
f1.write('666')#在末行添加一行666
print(f1)
f1.close()

r+b模式: 读写,先读后写。

f1 = open('张11',mode='r+b')
print(f1.read())
f1.write('6667555'.encode('utf-8'))
f1.close()

w wb模式:

w:没有文件,创建文件写内容。

w:如果有文件,清空原文件,写入新内容。

f1 = open('张三',encoding='utf-8',mode='w')
print(f1.write('777'))
f1.close

wb:覆盖添加

f1 = open('张三',mode='wb')
f1.write('s'.encode('utf-8')) #覆盖添加
f1.close()

w+:先写后读

1 = open('log1d',encoding='utf-8',mode='w+')
f1.write('fff')
f1.seek(0)#将光标移动到0的位置
print(f1.read())
f1.close()

w+b

a ab

a:没有文件,创建文件写内容

f1 = open('asd',encoding='utf-8',mode='a')
f1.write('qqq')
f1.close()

 

a+:有文件,直接在源文件后面追加新内容

 没有文件,创建文件写内容,默认追加到最后。

f1 = open('5',encoding='utf-8',mode='a+')
f1.write('5222')
f1.close()

 ab : 默认添加到最后

f1 = open('logr',mode='ab')
f1.write('中国'.encode('utf-8'))
# print(count)
f1.close()

readlable()判断文件是否可读

writable()判断文件是否可写

f1 = open('log1',encoding='utf-8',mode='r')
print(f1.readable())
print(f1.writable())

seek : 按照字节去调整光标

seek(0,2)

f1 = open('张三',encoding='utf-8')
print(f1.seek(3))
print(f1.read())

tell

f1 = open('张三',encoding='utf-8')
print(f1.tell())
print(f1.read())
print(f1.tell())

truncate 对原文件进行截取内容,以字节形式,只能在a模式下使用。

f1 = open('张三',encoding='gbk',mode='a')
f1.truncate(2)
print(f1)

 

posted @ 2018-05-08 16:15  Mr~Zhang  阅读(137)  评论(0编辑  收藏  举报