ptyhon之路day3-文件处理及函数1【金沙官网线上】

1.几种打开模式

文件处理

  • r   只读
  • w  只写
  • a  不可读,只能在文本最末尾追加
  • r+   可读可写,光标默认移动到行尾
  • w+  可写可读
  • a+  可读可写,只能在文本最末尾追加

文件处理流程

2.w和w+

1 打开文件,得到文件句柄并赋值给一个变量

  open('note.txt', 'w', encoding='utf-8') 或 open('note.txt', 'w+', encoding='utf-8')

2 通过句柄对文件进行操作

  以这两种方式open文本时,执行完这条语句后,文本就立刻被清空掉,所以使用w和w+时要谨慎

3 关闭文件

3.python3下的编码问题

1python中操作文件

  如果要打开的文本是用GBk编码的,那么open方法需要设置encoding='gbk'

f = open('a.txt','r',encoding='gbk') #windows操作系统默认gbk编码

  如果要打开的文本是用utf-8编码的,那么open方法需要设置encoding='utf-8'

open是打开文件 是向操作系统发起请求来打开一个文件

  encoding的作用是将文本中的字符以指定的编码方式做解码,即将文本中字符解码为unicode

f 是应用程序存到内存中 f->打开文件对应着

4.常用操作

f.read()

#迭代方式读取文本,只将当前行读入内存
f = open('note.txt', 'r+', encoding='GBk')
for line in f:
    print(line, end='')

r模式在文件没有的时候 不会自动创建文件

 

b模式即直接从硬盘中读取bytes

#迭代方式读取文本,如果想要修改文本的内容,只能通过重新创建新文本的方式实现
f_write = open('new.txt', 'w', encoding='GBK')
f_read = open('note.txt', 'r', encoding='GBk')

for line in f_read:
    if 'Corner' in line:
        line = line.replace('Corner', '博客园思密达')
    f_write.write(line)

f_read.close()
f_write.close()

f=open('a.txt','rb')

5.补充

print(f.read().decode('utf-8'))

  两个常见方法tell()和seek()

 

  windows的文本换行符 n 

w文本模式的写

文本模式的写 必须指定编码,文件不存在创建,文件存在则清空(实际是创建一个新文件覆盖掉)

f=open('a.txt','w',enconding='utf-8')

print(f.writable()) #TRUE 注:w只能写 r只能读

a文本模式的追加  

文本模式的追加,文件不存在创建,文件存在光标默认在最后位置追加

文本追加需要使用光标 在光标的位置进行插入

f=open('b.txt','a',enconing='utf-8')

print(f.tell())

如何测试使用a模式下是否能写

 f.write('111n') #FALSE

r+ w+ b+

读的时候写 写的时候读 

rb模式即直接从硬盘读取 编码基本不用考虑

f=open('a.txt','rb')

wb 模式

f=open('a.txt','wb')

f.write('你好啊').encode('utf-8')

ab模式

也是写模式 写到最后,每次都需要encode操作才能写入

 

可以发现之前的操作都是open 并没有关闭文件 这样会导致内存溢出 并没有回收,保证不占操作系统资源

不论f.close()还是其他的都是向操作系统发送命令进行执行

接下来是with open

with open ('file.txt','w',enconding='utf-8'**)**

f.write(‘1111n’)

简单copy程序

f=open('test.jpg','rb')

print(f.read())

本文由金沙官网线上发布于编程,转载请注明出处:ptyhon之路day3-文件处理及函数1【金沙官网线上】

您可能还会对下面的文章感兴趣: