chapter6.2、stringIO 、 bytesIO和路径操作

一、stringIO 和 bytesIO

stringIO

类文件对象,在内存中开辟一个文本模式的buffer,可以像文件一样操作

临时缓冲,不写入磁盘,close时关闭消失

tio.getvalue()  读取内容,不受指针影响,其他与文件操作相同

文件系统中没有相应的文件对象,没有fileno()

bytesIO

from io import BytesIO

与string的操作相同,在内存中开辟一个二进制模式的buffer,可以像文件对象一样操作

内存中的流,字符流和字节流,接口相同

可以使用with,文件对象和类文件对象你都支持上下文管理

磁盘操作慢于内存操作,内存足够时,优化思路是少落地,减少磁盘IO的过程,可以大大提高程序运

行效率

磁盘的缓存也可以使用,但不稳定,写入最好批量操作

file-like对象 ,类文件对象,操作接口统一

from sys impoort stdout ,stderr ,stdin

标准错误输出,在标准错误输出上输出颜色改变的字符串

标准输入,标准输出和标准错误输出都是类文件对象

二、路径操作

文件系统就是路径加文件本身

linux文件系统就是一颗目录树,一切皆文件,目录也是文件

Windows文件系统是分盘符的,

os.path 3.4之前使用os模块下的path方法

  windows 的路径分割符默认是\\ 盘符是O:/, linux下默认是 /,最左边的 / 都是根

  操作的类型是字符串,Linux下path.exists(), 来判断文件是否存在

  abspath

  dirname,文件目录,当前文件可以是目录

  basename

  path.spllitdrive

  from os import path

3.4以后使用

pathlib,提供path对象来操作,包括目录和文件

from pathlib import Path

path()      Winfows下===》WindowsPath(‘.‘),Linux下PosixPath(‘.‘)

p.absolute()  绝对路径.

p / ‘c‘ 此处 / 为运算符重载,结合为一个路径,字符串相除报语法错误,‘a‘/‘b‘,可以用括号包装起来

p.parts 分解成元组,拆分路径,返回路径中的每个部分

joinpath 连接多个字符串到path对象中

str(p)获取路径字符串   bytes(p)获取路径字符串的bytes

路径中的\注意转义

p.parent 父路经,目录的逻辑父目录

p.parents 祖先路径,可迭代对象,可以获得所有的父路径,索引0是直接的父

目录组成部分

p2.name 指basename ,

p2.stem 不带类型的最后一个文件名,

p2.suffix 最后一个文件的后缀,

p2.suffixes多级扩展名列表

p2.with_name,名称替换 ,替换路径基名,并返回一个新的路径

p2.with_suffix() 替换扩展名,有则替换,无则补充扩展名。

p.cwd() 类上的对象可以直接调用类的某些操作方法,返回当前工作目录

p.home()返回家目录

判断方法

p.is_dir() 不存在判断都是False,存在返回True

p.is_file() 判断是否普通文件,存在返回True

p.is_symlink()  是否软链接

p.is_socket() 文件

p.is_block_device() 是否块设备

p.is_absolute()  是否直接路径,软连接,不解析

p.resolve()  返回新路径,就是当前path对象的绝对路径,如果是软连接,解析它

p.absolute()   获取绝对路径

p.exists()   目录或文件是否存在

rmdir() 删除空目录,有文件,不删,慎用删除

touch(mode=0o666,exist_ok=True) :

  path(‘O:/test‘).touch()      

  touch的·参数exist_ok ,是否覆盖,存在也覆盖,会压制异常;touch改变文件atime

p.as_uri()  将路径返回成URI,例如"file:///etc/passwd"

p.mkdir(mode=0o777,parents=False,exist_ok=False),

  parents,是否创建父目录:True等同于mkdir -p ,False时,父目录不存在抛异常FileNotFoundError

  exist_ok 参数,Fasle时,路径存在,抛FileExistsError,True时,压制异常,忽略

迭代

iterdir,迭代目录,遍历目录所有内容,不递归,显示隐藏文件

通配符

glob(pattern) 通配给定的模式

rglob(pattern) 通配给定的模式,递归寻找

都返回 生成器对象

glob(‘*/*log‘)   */下一层,; *.log *通配;**/下任意层寻找,相当于rglob

match(pattern)模式匹配成功返回True

stat()    相当于stat ,文件状态信息,跟踪软连接到文件本身

lstat 对符号链接只看连接文件本身的文件信息

文件操作

路径打开

Path.open(self, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None)

方法与内建函数open类似,返回一个文件对象

p.write源代码中使用with,调用不用关文件

Path.read_text(encoding=None,errors=None)

Path.read_bytes  :rb读取路径对应文件,

from pathlib import Path
p = Path(‘./test_binary.txt‘)
p.write_bytes(b‘asd‘)
p.read_bytes()
p = Path(‘./test_test.txt‘)
p.write_text(‘absd‘)
p.read_text()

原文地址:https://www.cnblogs.com/rprp789/p/9581709.html

时间: 2024-10-09 09:47:04

chapter6.2、stringIO 、 bytesIO和路径操作的相关文章

文件操作,路径操作,StringIO和BytesIO,序列化反序列化,正则表达式与python中使用

文件操作 打开操作open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True,opener=None)打开一个文件,返回一个文件对象(流对象)和文件描述符.打开文件失败,则返回异常基本使用: 创建一个文件test,然后打开它,用完关闭文件操作中,最常用的操作就是读和写. 文件访问的模式有两种:文本模式和二进制模式.不同模式下,操作函数不尽相同,表现的结果也不一样.open的参数

五.Python文件IO和路径操作

目录 Python文件IO操作 上下文管理with 路径操作 01 Python文件IO操作: clumn column open 打开 read 读取 write 写入 close 关闭 readline 行读取 readlines 多行读取 seek 文件指针操作 tell 指针位置 打开文件 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=No

Python IO编程——StringIO & BytesIO

1.1   StringIO & BytesIO 1.1.1   StringIO StringIO顾名思义就是在内存中读写str. 写StringIO >>> fromio import StringIO >>> f = StringIO() >>> f.write('hello') 5 >>> f.write(' ') 1 >>> f.write('world!') 6 >>> f.ge

NodeJs基础之字节操作、路径操作和文本操作

字节操作 buffer对象 构造函数 new Buffer(size) 参数为数值,表示分配空间的长度 new Buffer(string,[encoding]) 参数为字符串,表示存入Buffer的数据,编码可选 new Buffer(array) 参数为数组,表示存入Buffer的数据 静态方法 Buffer.isBuffer(obj) 判断是否为Buffer(静态方法直接通过类名调用) 实例方法 buf.write(content,offset,length,encoding); cont

8.1.2 纯路径操作

纯路径操作对象提供了一些操作路径的功能,但不会访问文件系统的功能.主要提供下面三个类对象: class pathlib.PurePath(*pathsegments) 创建一个通用表示文件路径的类. 例子: #python 3.4 from pathlib import * p = PurePath('F:\\temp\\py') print(p) p = PurePath('foo', 'some/path', 'bar') print(p) p = PurePath(Path('foo'),

c# 获取相对路径,操作环境变量.

c# 获取相对路径,操作环境变量. 一.获取当前文件的路径 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName // Get the current directory. string path = Directory.GetCurrentDirectory(); 获取模块的完整路径,包括文件名. 2. System.Environment.CurrentDirectory 获取和设置当前目录(该进程从中启动

.net持续集成cake篇之常见文件及路径操作

系列目录 Cake常见文件和路径操作 在自动化构建任务里,很多操作都是跟文件打交道,比如文件打包,文件压缩,文件归档,文件传输,目录清理等.本节介绍一些cake里常见的文件操作方法 Cake相对路径问题 做过自动化的同学可能都知道,使用相对路径时,脚本在测试时的相对路径往往和正式环境中不一样,宿主环境的路径往往最终导致明明测试好的脚本最终却出现各种路径问题.但是如果把路径写成绝对路径往往又造成脚本通用性不强,每迁移到一个新项目就需要重新修改脚本文件,对脚本的修改往往意味着导致脚本出错的风险.而C

Go path/filepath文件路径操作

本文:https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter06/06.2.html path:https://www.php.cn/manual/view/35279.html filepath:https://www.php.cn/manual/view/35280.html path/filepath — 兼容操作系统的文件路径操作 path/filepath 包涉及到路径操作时,路径分隔符使

Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化

IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.从磁盘读取文件到内存,就只有Input操作,反过来,把数据写到磁盘文件里,就只是一个Output操作. 由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题.举个例子来说,比如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘要接收这10