前言:
而今大家对“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