【python】IO编程

这篇具有很好参考价值的文章主要介绍了【python】IO编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件读写

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

简化为下面的语法糖

with open(r"C:\test\test.txt", 'r') as f:
    for line in f.readlines():
        print(line.strip())  # 把末尾的'\n'删掉

这个文件中,每行的末尾都有一个看不见的换行符,而print 语句也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文件,另一个来自print 语句。

调用read()会一次性读取文件的全部内容,但如果文件有10G,内存就爆了。所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list

如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:

要读取二进制文件,比如图片、视频等等,需要用'rb'模式打开文件

非UTF-8编码的文本文件,需要给open()函数传入encoding参数

遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略

f=open(r"D:\c盘来的\共享文件\bz\col.jpg","rb")
g=open("pic.jpg","wb")
while(1):
    a = f.read(8)
    if(not a):
        break
    g.write(a)
f.close()
g.close()

StringIO

from io import StringIO
f = StringIO()
f.write('hello')
print(f.getvalue())
f.close()

读取StringIO,可以用一个str初始化StringIO,然后,像读文件一样读取

from io import StringIO
f = StringIO('Hello!\nGoodbye!')
s = f.readlines()
for i in s:
    print(i.strip())
f.close()

BytesIO

StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO

from io import BytesIO
f = BytesIO()
f.write('中文'.encode('utf-8'))
print(f.getvalue().decode('utf-8'))

用一个bytes初始化BytesIO,然后可以像读文件一样读取

from io import BytesIO
f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
print(f.read())

File.seek(1) File.seek(2) 0指针回到文件开头 1当前位置 2文件结尾

import io
# 写入二进制数据到 BytesIO 对象中
data = b"Hello, World!"
bio = io.BytesIO()
bio.write(data)
# 从 BytesIO 对象中读取二进制数据
bio.seek(0)
read_data = bio.read()
print(read_data)

在 Python 中,以 b 开头的字符串表示的是二进制字符串(bytes)。这种字符串是由字节组成的,每个字节都有一个对应的整数值,范围在 0 到 255 之间。二进制字符串与普通字符串不同,因为普通字符串是由 Unicode 字符组成的,每个字符都对应一个 Unicode 码点。

将二进制字符串转换成普通字符串,可以使用字符串的 decode() 方法。decode() 方法将一个字节串(bytes)转换成一个字符串(str),需要指定一个编码方式。在不知道编码方式的情况下,可以使用默认编码方式(通常为 UTF-8)

read_data = bio.read().decode()

文件和目录

import os
print(os.path.abspath('.'))
a=os.path.join('D:\c盘来的\py\pycharm', 'mypro\coleak')
print(a)
# os.mkdir(a)
os.rmdir(a)

os.path.split() 函数可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名

os.path.splitext() 可以直接让你得到文件扩展名

输出所由目录

import os
for x in os.listdir('.'):
    if os.path.isdir(x):
        print(x)

序列化

import pickle
d = dict(name='coleak', age=20, score=88)
e={"name":"coleak","age":19}
print(type(e))
print(pickle.dumps(d))
e=pickle.dumps(e)
print(pickle.loads(e))

存储到文件文章来源地址https://www.toymoban.com/news/detail-488294.html

import pickle
d = dict(name='Bob', age=20, score=88)
pickle.dumps(d)
f = open('a.txt', 'wb')
pickle.dump(d, f)
f.close()
f = open('a.txt', 'rb')
d = pickle.load(f)
print(d)
f.close()

JSON

import json
d = dict(name='Bob', age=20, score=88)
print(json.dumps(d))

f = open('a.txt', 'rb')
d = pickle.load(f)
print(d)
f.close()

到了这里,关于【python】IO编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 文件IO_文件读写(附Linux-5.15.10内核源码分析)

    目录 1.什么是文件偏移量? 1.1 文件偏移量介绍 1.2 文件偏移量重点 1.3 文件偏移量工作原理 2.文件偏移量设置 2.1 lseek函数 2.2 lseek内核源码分析 3.写文件 3.1 write函数 3.2 write内核源码分析 4.读文件 4.1 read函数 4.2 read内核源码分析 5.文件读写,文件偏移量设置示例代码 在介绍文

    2024年02月16日
    浏览(47)
  • Linux系统编程---文件IO

    一、系统调用 由操作系统实现并提供给外部应用程序的编程接口(Application Programming Interface,API),用户程序可以通过这个特殊接口来获得操作系统内核提供的服务 系统调用和库函数的区别: 系统调用(系统函数)     内核提供的函数 库调用                        

    2024年04月13日
    浏览(24)
  • Linux应用编程--IO文件

    【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1.pdf (gitee.com) (1)整个嵌入式linux核心课程包括5个点,按照学习顺序依次是:裸机,c高级,uboot和系统移植,linux应用编程和网络编程,驱动 (2)典型的嵌入式产品就是基于嵌入式linux操作系统来工作。典型的嵌入式产品的研发

    2024年02月07日
    浏览(80)
  • Spark RDD编程 文件数据读写

    从本地文件系统读取数据,可以采用textFile()方法,可以为textFile()方法提供一个本地文件或目录地址,如果是一个文件地址,它会加载该文件,如果是一个目录地址,它会加载该目录下的所有文件的数据。 示例:读取一个本地文件word.txt val textFile中的textFile是变量名称,sc.t

    2024年02月05日
    浏览(31)
  • 【Java 编程】文件操作,文件内容的读写—数据流

    平时说的文件一般都是指存储在 硬盘 上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一个 广义的概念 ,就不只是包含普通文件,还可以包含 目录 (把目录称为目录文件) 操作系统中,还会使用文件来描

    2023年04月08日
    浏览(37)
  • python-文件与异常处理try-except、finally

    文件和异常处理在文件操作中是非常重要的,它可以帮助我们处理文件不存在或权限问题等异常情况。以下是关于文件和异常处理的全面讲解以及相应的代码示例: 1. 文件不存在和权限问题的异常处理: 文件不存在时,打开文件时会抛出 FileNotFoundError 异常。 权限问题包括无

    2024年02月09日
    浏览(33)
  • 【Java-IO流】cn.hutool.core.io.IORuntimeException: IOException: Stream closed

    今天在项目中需要读取request请求中的body多次,当我直接去read的时候出现了问题; 报错如下: 产生的原因如下: httpServletRequest中的流只能读取一次的原因 想要多次读取request中body的内容,需要先存储一份,然后读取; 问了导师,有一个类可以多次读取body内容,因为他会将

    2024年02月11日
    浏览(34)
  • 【python】IO编程

    简化为下面的语法糖 这个文件中,每行的末尾都有一个看不见的换行符,而print 语句也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文件,另一个来自print 语句。 调用 read() 会一次性读取文件的全部内容,但如果文件有10G,内存就爆了。所以,要保险起见,可

    2024年02月09日
    浏览(21)
  • java.io.IOException: UT010029: Stream is closed异常

    后端提供一个excel文件模板下载接口 我们使用了ServletOutputStream来向客户端发送响应。在finally块中不需要关闭输出流,因为Servlet容器会在请求处理完成后自动关闭输出流。如果在finally块中尝试关闭已关闭的输出流,就会抛出java.io.IOException: Stream is closed异常。因此,我们可以

    2024年02月14日
    浏览(48)
  • Liunx系统编程:系统层面上的文件IO接口

    目录 一. 如何在系统层面上理解文件 二. 语言层面上的文件IO函数 三. Linux操作系统提供的IO接口 3.1 open接口 -- 打开文件 3.2 close接口 -- 关闭文件 3.3 write接口 -- 向文件中写内容 3.4 read接口 -- 从文件中读取内容 四. 总结 在Linux操作系统层面,可以认为,只要能进行input写

    2024年02月12日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包