文件补课

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 cant decode byte 0x97 in position 109: illegal multibyte sequence
    2.路径错误:未转义   
    加\  或加r(推荐)rF:\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)

 

以上是关于文件补课的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法___假期补课

在学习爬虫的路上,有多少坑在前边

补课系列:最小生成树

Linux知识补课

脱产班第一次补课习题

VSCode自定义代码片段——.vue文件的模板