• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于python:Python之路day08文件读写操作函数初识

python 搞代码 3年前 (2022-02-20) 23次浏览 已收录 0个评论
文章目录[隐藏]

前言时刻:

明天挑战一下,将day08和day09的搞定。明天次要学习了文件的操作读写、

来来总结一波:

学习了文件的读:r、rb、r+、r+b

写:w、wb、w+、w+b

文件句柄,seek光标,flush强制刷新文件内容,tell:通知以后句柄所在的地位(int)

Day09:函数的定义

传参:实参、形参

1、文件操作

Python 中的文件操作很重要,尽管不难,然而坑不少,比方:文件的编码方式。如果你搞懂 Python 的编码方式了,这都不是问题,具体可看我之前写的文章:Python文件编码问题。还有就是利用场景很多,比方机器学习中数据的读取和写入、Web 爬虫的数据存取等。

<code class="bash">open(file, mode='w', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数阐明:

  • file: 必须,文件门路(绝对或者绝对路径)。
  • mode: 可选,文件操作模式

    • 写:w、wb、w+、wb+,读:r、rb、r+、rb+
  • buffering: 设置缓冲
  • encoding: 若不设置则默认和操作系统的默认编码方式一样。比方:Mac OS上是 UTF-8,Windows上是 gbk,不过 win10 上改成 UTF-8 了,Linux 上是 UTF-8。依照解码和编码方式一样的准则,有UTF-8、GBK等。
  • errors: 报错级别
  • newline: 辨别换行符
  • closefd: 传入的file参数类型
  • opener: 设置自定义开启器,开启器的返回值必须是一个关上的文件描述符。

1.1、写入文件操作

写入的 mode 有:w 以 Unicode 的形式写入文件内容,wb 写入二进制的文件内容,w+ 能够读取也能够写入,加号相当于是增加了一个性能,wb+ 可读可写二进制文件。

# 1、麻烦的一种形式,

file_name = "write_test.txt"
f = open('write_test.txt', mode='w', encoding="utf8")   # 定义操作文件的句柄f,

f.write("这是一个")   # 写入内容
f.close()   # 敞开文件句柄

# 2、举荐形式  应用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 能够并列操作几个文件哈")

1.2、读取文件操作

写入的 mode 有:r 以 Unicode 的形式读取文件内容,rb 读取二进制的文件内容,r+ 能够读取也能够写入,加号相当于是增加了一个性能,rb+ 可读可写 二进制文件。

读取文件的形式需重点把握,

"""
write_test.txt 文件的内容:

我是支流with读取文件的形式。
hi 第二行
"""

read 办法:

应用 f.read()办法读取文件不是很举荐,因为他会一次性将文件所有数据读取到内存中

# 1、read办法
with open("write_test.txt", mode='r', encoding="utf8") as f:
    content = f.read()
    print(content)
    
    # 1.2、读取前n个字符
    print(f.tell())   # 53   tell 以后光标的地位
    f.seek(0)   # seek 将光标挪动到0的地位 单位是字节byte
 
    print(f.read(4))  # 我是支流    read(n) 读取前n个字符

  • f.tell() 返回以后文件句柄的光标的地位,单位是字节
  • f.seek(number) 将光标移到 number 的地位,单位是字节byte
  • f.read(number) 读取以后光标前面的 number 个字符
  • 解释下,字符和字符的区别,英文字母的话一个字符=一个字节,然而中文,一个中文字符=3个字节。还是数据编码的问题,哈哈,如果搞懂了,这里so easy。

readline和readlines 办法:

f.readline() 读取以后光标所在行的光标之后的内容。

"""
write_test.txt 内容:

我爱
学习Python
"""
# 2、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() 返回文件中所有行内容的列表,以换行符作为分隔。

# 3、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
"""

# 2、readline

with open("write_test.txt", encoding="utf8") as f:
    for each in f:
        print(each)

# 打印:
"""
我爱

学习Python

"""

总结:

文件操作很重要,然而少不了文件编码的问题,所以要搞懂编码问题。否则前面再有编码的问题,在学习就有点浪费时间了。

参考文章:

https://www.zwjjiaozhu.top/20&#8230;

https://www.runoob.com/python&#8230;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于python:Python之路day08文件读写操作函数初识

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址