龙空技术网

python 常见IO都有哪些?这些基础方法是否也是你常用到的呢

雨滴测试 623

前言:

而今大家对“stringiopython”大致比较重视,咱们都想要分析一些“stringiopython”的相关资讯。那么小编在网上汇集了一些有关“stringiopython””的相关知识,希望姐妹们能喜欢,同学们快快来学习一下吧!

所谓的IO,其实就是指Input/Output ,也就是输入和输出 。在计算机常见的IO操作有控制台IO、硬盘IO、内存IO以及网络IO 。由于网络IO涉及知识比较广,故不在本文介绍 。

1.控制台IO

控制台IO是我们最常见也最常用的操作,基本只要你学习python,就离不开控制台的IO操作。这两个函数也非常简单,具体操作如下:

print("hello python")hello pythontext = input("请输入值:")请输入值:>? 'hello python'print('你输入的内容是:'+text)'你输入的内容是:hello python'
2.文件IO

open方法

在python中,文件的读写是通过一个open方法来完成的 。它的具体用法如下:

作用 :用于打开一个文件,并返回该文件的对象 。

具体语法:

f = open(文件名,模式,文件编码)  #具体如下f = open(filename,mode,encoding)

参数说明:

filename :必传 ,指定读取的文件名,需要加上文件路径 。mode :可选 ,此模式有很多种,常用的就是如下几种,默认模式为只读r : 以只读模式打开w : 用写入模式打开a :以追加模式打开b : 以二进制格式打开一个文件rb : 以二进制方式打开进行读取,一般用于非文本文件,如图片 。wb : 以二进制方式打开进行写,一般用于非文本文件,如图片 。encoding : 设置编码,一般使用utf8即可。

在上面我们可以看到,使用open方法进行打开文件后,返回一个文件对象f,这个f又支持很多函数,具体如下:

方法

说明

解释

f.read([size])

从文件中读取指定的字节数,若不传则读取所有

读取指定数量的字节数,可以使用这种方式。

f.readline()

读取整行,包括‘\n’字符

若文件内容很大,建议使用这种方式

f.readlines()

读取所有行并以列表形式返回

文件内容少,可以使用这种方式,可以循环输出

f.write(str)

将字符串写入文件,返回的是写入字符串的长度

f.writelines(seq)

向文件写入一个序列字符串列表,如果需要换行则要加入每行的换行符

这种方式可以将序列中的元素作为内容写入文件 。

f.seek(offset[,whence])

设置文件当前位置

用于移动文件读取指针到指定位置。

f.tell()

返回文件当前位置

也就是返回指针当前位置。

f.next()

返回文件下一行

文件使用迭代器时会使用到,在循环中,next()在每次循环中调用,返回文件的下一行

f.fulsh()

将缓存区的数据直接写入文件。

f.close()

关闭文件

当操作完文件,对文件要进行关闭操作 。

假如我们有以下文件,与python执行文件在同一文件夹中。

a.txt

Python is designed to be very readable.Compared with other languages, English keywords are often used,and some punctuation marks in other languageshave a more distinctive grammatical structure than other languages.
使用read方法进行读取
# 1. read()方法读取f = open('a.txt','r')content = f.read()print(content)  #输出:Python is designed to be very readable.Compared with other languages, English keywords are often used,and some punctuation marks in other languageshave a more distinctive grammatical structure than other languages.
使用readline方法进行读取
# 2. readline()方法读取f = open('a.txt','r')while True:    # 每次只读取一行    line = f.readline()    # 判断是否读取到内容    if not line:        break        print(line,end="")f.close()# 输出 :同样是a.txt中的内容#说明 :这样读取方式特别适合大的文本文件读取 ,不需要把所有内容一次加载到内存中,避免过度占用内存
使用readlines方法进行读取
# 3.readlines()方法读取f = open('a.txt','r')all_lines = f.readlines()print(all_lines)            #这里返回的是列表for x in all_lines:    print(x,end=" ")f.close()#输出 : 同样是a.txt中的内容
使用write()方法进行写文件内容
# 4.使用write()方法进行写内容f = open('b.txt','w')f.write("hello python")f.close()#输出:在b.txt中会写入一行hello python的字符串
使用write()方法进行写,但是是追加方式 。
# 4.使用write()方法进行写内容f = open('b.txt','r')f.write("hello java")f.close()#输出:在b.txt中的最后一行会添加一行hello java的字符串
3.内存数据IO

很多时候,数据的读写是来自于内存 。这个时候我们就可以使用StringIO .

StringIO

这个类返回的对象也具有以上方法,如read,readline,readlines等 ,只是这里又多了一个getvalue()方法 。

getvalue : 用于返回对象的所有数据 ,具体代码:

from io import  StringIOf = StringIO()#写入内存f.write('hello python')# 内存中获取数据:getvalue() print(f.getvalue())f.close()#输出 :hello python

以下使用readline进行读取。

from io import  StringIOf = StringIO()f.write("hello python")f.write("hello java")f.seek(0)# 通过readline读取lines = f.readline()print(lines)# 通过getvalue()print(f.getvalue())f.close()#输出 : 通过readline和getvalue获取的内容是一样的。hello pythonhello javahello pythonhello java

从上面可以看出 ,内存读写和文件读写,主要有以下区别:

因为StringIO操作的是内存,故读写性能更快一些 。使用StringIO能同时进行读写操作 ,而这在读写文件时是不允许的 ,

BytesIO

使用BytesIO进行读写,主要是可以实现二进制数据的读写 ;而StringIO只能操作字符串 。

这就像文件读写中读写模式 ,如果想进行二进制模式读写,你就得设置mode='b'

除这一点区别外,BytesIO和StringIO的方法完全一样 。

from io import BytesIOf = BytesIO()# 因为是二进制读写,所以必须设置编码f.write('hello python'.encode('utf-8'))print(f.getvalue())f.close()#输出 :b'hello python'
4.文件目录操作

使用os模块对文件或文件夹进行操作,如新建删除等操作 。

os.path模块os.path.abspath(path) :显示当前绝对路径os.path.dirname(path) :返回该路径的父目录os.path.basename(path):回该路径的最后一个目录名或者文件名os.path.isfile(path) :判断是否是一个文件,如果path是一个文件,则返回Trueos.path.isdir(path) :判断是否是一个目录,如果path是一个目录,则返回Trueos.path.exist(path) : 判断当前路径是否存在,存在返回Tureos.path.split(path) :分割成路径名和文件名。os.path.splitext() : 分割路径和扩展名os.path.join(path,name):连接目录与文件名或目录 结果为path/nameos.name :显示当前使用的平台os.getcmd() :显示当前的工作目录os.listdir('dirname') :返回指定目录下的文件和目录名os.remove(path) :删除路径中的文件os.makedirs(‘dirname/dirname’) :生成多层递归目录os.rmdir('dirname'):删除目录os.rename(src,dst) :重命名文件或目录,从src到dstos.system('命令') :运行命令os.sep :显示平台下路径分隔符os.linesep:返回当前平台使用的终止符os.environ() :获取系统环境变量os.stat() :获取文件或目录信息

标签: #stringiopython