今天挑战一下,将day08和day09的搞定。今天主要学习了文件的操做读写、html
来来总结一波:python
学习了文件的读:r、rb、r+、r+bbash
写:w、wb、w+、w+b机器学习
文件句柄,seek光标,flush强制刷新文件内容,tell:告诉当前句柄所在的位置(int)函数
Day09:函数的定义学习
传参:实参、形参编码
Python 中的文件操做很重要,虽然不难,可是坑很多,好比:文件的编码方式。若是你搞懂 Python 的编码方式了,这都不是问题,具体可看我以前写的文章:Python文件编码问题。还有就是应用场景不少,好比机器学习中数据的读取和写入、Web 爬虫的数据存取等。操作系统
open(file, mode='w', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:code
mode: 可选,文件操做模式htm
写入的 mode 有:w 以 Unicode 的方式写入文件内容,wb 写入二进制的文件内容,w+ 能够读取也能够写入,加号至关因而添加了一个功能,wb+ 可读可写二进制文件。
# 一、麻烦的一种方式, file_name = "write_test.txt" f = open('write_test.txt', mode='w', encoding="utf8") # 定义操做文件的句柄f, f.write("这是一个") # 写入内容 f.close() # 关闭文件句柄 # 二、推荐方式 使用with,结束后自动关闭句柄 with open("write_test.txt", mode='w', encoding="utf8") as f, open("test2.txt", 'w', encoding="utf8") as f2: f.write("我是主流with读取文件的方式。") f2.write("with 能够并列操做几个文件哈")
写入的 mode 有:r 以 Unicode 的方式读取文件内容,rb 读取二进制的文件内容,r+ 能够读取也能够写入,加号至关因而添加了一个功能,rb+ 可读可写 二进制文件。
读取文件的方式需重点掌握,
""" write_test.txt 文件的内容: 我是主流with读取文件的方式。 hi 第二行 """
使用 f.read()
方法读取文件不是很推荐,由于他会一次性将文件全部数据读取到内存中
# 一、read方法 with open("write_test.txt", mode='r', encoding="utf8") as f: content = f.read() print(content) # 1.二、读取前n个字符 print(f.tell()) # 53 tell 当前光标的位置 f.seek(0) # seek 将光标移动到0的位置 单位是字节byte print(f.read(4)) # 我是主流 read(n) 读取前n个字符
f.readline()
读取当前光标所在行的光标以后的内容。
""" write_test.txt 内容: 我爱 学习Python """ # 二、readline with open("write_test.txt", mode='r', encoding="utf8") as f: f.seek(10) content = f.readline() print(content) # 习Python
来来解释一下,首先我使用 seek(7) 将光标移动到第七个字节上(“学习”占用6个字节+紧接着是换行符占用一个自字节+第二行的”学“占3个字节),就到了第二行的”学“以后,而后使用 readline() 就读到了”习Python“。
f.readlines()
返回文件中全部行内容的列表,以换行符做为分隔。
# 三、readlines with open("write_test.txt", mode='r', encoding="utf8") as f: content = f.readlines() print(content, type(content)) # ['我是主流with读取文件的方式。\n', 'hi 第二行'] <class 'list'>
小总结:readlines()
方法针对小文件而言,适合并且快;可是对于一个大的文件,一次性彻底读取到内存中,就很费资源,不是很推荐。
可是我 Python 怎么可能不解决此问题,请出咱们今天的读取文件的主角方式 迭代读取文件内容。
推荐,
""" write_test.txt 内容: 我爱 学习Python """ # 二、readline with open("write_test.txt", encoding="utf8") as f: for each in f: print(each) # 打印: """ 我爱 学习Python """
文件操做很重要,可是少不了文件编码的问题,因此要搞懂编码问题。不然后面再有编码的问题,在学习就有点浪费时间了。
参考文章: