文件补课
Posted lijie123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件补课相关的知识,希望对你有一定的参考价值。
# f1=open(‘a2.txt‘,encoding=‘utf-8‘) # print(f1.read()) # f1.close() ‘‘‘ f1 或者文件句柄 ,f,file,file hander,f_h.. open()调用的内置函数,内置函数调用的系统内部的open,(windows、linux、mac内部的open) 一切对文件进行的操作都是基于文件句柄f1的 ‘‘‘ ‘‘‘ 文件 操作文件 1.文件路径 2.编码方式 3,动作mode 代码 # f1 = open(‘D:空姐护士老师主妇.txt‘, encoding=‘utf-8‘, mode=‘r‘) # content = f1.read() # print(content) # f1.close() 执行流程: 1,打开文件,产生文件句柄。 2,操作文件句柄。 3.关闭文件句柄!! 报错原因: 1.编码错误:编码不一致 UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x97 in position 109: illegal multibyte sequence 2.路径错误:未转义 加\ 或加r(推荐)r‘F:\Python自动化21期\day03\1.txt‘ ‘‘‘ ‘‘‘ 读:r rb r+ r+b 1.read()全读出来 2.r 模式 read(n) 读一部分,按字符去读取(n个中文或n个数字或符号) rb 模式 read(n) 读一部分,按字节去读取(eg:4时,就是4个字节,但无法解码的) 3.readline按行读取 4.readlines 全读出来,将每一行作为列表的每一个元素,并返回这个列表 5.for循环----几乎不占内存,相当于循环readlines的列表,但节省空间啊--推荐 f1=open(‘a2.txt‘,encoding=‘utf-8‘) for line in f1: print(line) f1.close() r+读写,先读后写 --- 先写后读可能报错 写:w wb w+ w+b w没有文件,新建文件写入内容 有原文件,先清空内容,在写入新内容 #wb图片的读取及写入 f1=open(‘1.jpg‘,‘rb‘) content=f1.read() f2=open(‘2.jpg‘,‘wb‘) f2.write(content) f1.close() f2.close() w+ 先写后读 先写入,调整光标,在全部读出 f1=open(‘a1.txt‘,encoding=‘utf-8‘,mode=‘w+‘) f1.write(‘老dfhdfjggggggggggggggfdj‘) f1.seek(0) #调整光标 print(f1.read()) f1.close() 追加:a ab a+ a+b a没有文件,新建文件写入内容 有原文件,在最后追加 ----可以加 换行 f1=open(‘a1.txt‘,encoding=‘utf-8‘,mode=‘a‘) f1.write(‘ 测试‘) f1.close() a+ 追加写读 f1=open(‘a1.txt‘,encoding=‘utf-8‘,mode=‘a+‘) f1.write(‘ zzz‘) f1.seek(0) #调整光标 print(f1.read()) f1.close() ‘‘‘ # f1=open(‘a.bak‘,‘rb‘) # print(f1.read()) # f1.close() # f1=open(‘a1.txt‘,encoding=‘utf-8‘,mode=‘a+‘) # f1.write(‘ zzz‘) # f1.seek(0) #调整光标 # print(f1.read()) # f1.close() # #wb图片的读取及写入 # f1=open(‘1.jpg‘,‘rb‘) # content=f1.read() # # f2=open(‘2.jpg‘,‘wb‘) # f2.write(content) # f1.close() # f2.close() ‘‘‘ 其它操作方法: read readline readlines write flush 刷新文件内部缓冲区 readable是否可读 返回True False writable是否可写 返回True False tell告诉光标位置----------(按字节) seek调整光标位置 0 seek(0,2)光标调整到最后 ftp上传下载--断点续传依赖于seek f1=open(‘a1.txt‘,encoding=‘utf-8‘) # print(f1.readable()) # print(f1.writable()) print(f1.read(3)) print(f1.tell()) # f1.seek(0) #光标调整到开头 f1.seek(11) #任意调整 # f1.seek(0,2) #光标调整到最后 print(f1.tell()) #告诉光标的位置 f1.close() truncate 按照字节去截取,必须在a或a+模式 截断数据,仅保留指定之前数据 # f1=open(‘a1.txt‘,encoding=‘utf-8‘,mode=‘a+‘) # f1.truncate(3) # f1.close() ‘‘‘ # f1=open(‘a1.txt‘,encoding=‘utf-8‘) # # print(f1.readable()) # # print(f1.writable()) # print(f1.read(3)) # print(f1.tell()) # # f1.seek(0) #光标调整到开头 # f1.seek(11) #任意调整 # # f1.seek(0,2) #光标调整到最后 # print(f1.tell()) #告诉光标的位置 # f1.close() # f1=open(‘a1.txt‘,encoding=‘utf-8‘,mode=‘a+‘) # f1.truncate(3) # f1.close() ‘‘‘ with 1.可以同时操作多个文件 2.不用手动关闭 注意:对同一文件又读又写有时会出问题,共用一个文件句柄错误;可以读完之后,写f1.close()主动关闭 #文件的改 #1,以读模式打开原文件,产生文件句柄。 #2,以写的模式打开一个新文件,产生文件句柄。 #3,读取原文件,进行修改,将修改后的内容写入新文件。 #4,将原文件删除。 #5,新文件重命名原文件。 ‘‘‘ # with open(‘a1.txt‘,encoding=‘utf-8‘) as f1,# open(‘a2.txt‘,encoding=‘utf-8‘,mode=‘w‘) as f2: # print(f1.read()) # f2.write(‘3333‘) # import os # with open(‘file_test‘, encoding=‘utf-8‘) as f1,# open(‘file_test.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2: # old_content = f1.read() # new_content = old_content.replace(‘alex‘,‘SB‘) # f2.write(new_content) # os.remove(‘file_test‘) # os.rename(‘file_test.bak‘,‘file_test‘) # import os # with open(‘file_test.py‘, encoding=‘utf-8‘) as f1,# open(‘file_test.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2: # for line in f1: #for循环未结束一直在持续写,所以w也不覆盖;一个文件句柄可以写多次,只要未关闭之前。 # new_line = line.replace(‘alex‘,‘SB‘) # f2.write(new_line) # os.remove(‘file_test.py‘) # os.rename(‘file_test.bak‘,‘file_test.py‘) with open(‘a1.txt‘,encoding=‘utf-8‘,mode=‘w‘) as f1: f1.write(‘111‘) f1.write(‘2222221‘)
以上是关于文件补课的主要内容,如果未能解决你的问题,请参考以下文章