所谓的IO,其实就是指Input/Output ,也就是输入和输出 。在计算机常见的IO操作有控制台IO、硬盘IO、内存IO以及网络IO 。由于网络IO涉及知识比较广,故不在本文介绍 。
控制台IO是我们最常见也最常用的操作,基本只要你学习python,就离不开控制台的IO操作。这两个函数也非常简单,具体操作如下:
print("hello python")
hello python
text = input("请输入值:")
请输入值:>? 'hello python'
print('你输入的内容是:'+text)
'你输入的内容是:hello python'
open方法
在python中,文件的读写是通过一个open方法来完成的 。它的具体用法如下:
作用 :用于打开一个文件,并返回该文件的对象 。
具体语法:
f = open(文件名,模式,文件编码) #具体如下
f = open(filename,mode,encoding)
参数说明:
在上面我们可以看到,使用open方法进行打开文件后,返回一个文件对象f,这个f又支持很多函数,具体如下:
方法 | 说明 | 解释 |
f.read([size]) | 从文件中读取指定的字节数,若不传则读取所有 | 读取指定数量的字节数,可以使用这种方式。 |
f.readline() | 读取整行,包括‘ ’字符 | 若文件内容很大,建议使用这种方式 |
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 languages
have a more distinctive grammatical structure than other languages.
# 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 languages
have a more distinctive grammatical structure than other languages.
# 2. readline()方法读取
f = open('a.txt','r')
while True:
# 每次只读取一行
line = f.readline()
# 判断是否读取到内容
if not line:
break
print(line,end="")
f.close()
# 输出 :同样是a.txt中的内容
#说明 :这样读取方式特别适合大的文本文件读取 ,不需要把所有内容一次加载到内存中,避免过度占用内存
# 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中的内容
# 4.使用write()方法进行写内容
f = open('b.txt','w')
f.write("hello python")
f.close()
#输出:在b.txt中会写入一行hello python的字符串
# 4.使用write()方法进行写内容
f = open('b.txt','r')
f.write("hello java")
f.close()
#输出:在b.txt中的最后一行会添加一行hello java的字符串
很多时候,数据的读写是来自于内存 。这个时候我们就可以使用StringIO .
StringIO
这个类返回的对象也具有以上方法,如read,readline,readlines等 ,只是这里又多了一个getvalue()方法 。
getvalue : 用于返回对象的所有数据 ,具体代码:
from io import StringIO
f = StringIO()
#写入内存
f.write('hello python')
# 内存中获取数据:getvalue()
print(f.getvalue())
f.close()
#输出 :hello python
以下使用readline进行读取。
from io import StringIO
f = 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 java
hello pythonhello java
从上面可以看出 ,内存读写和文件读写,主要有以下区别:
BytesIO
使用BytesIO进行读写,主要是可以实现二进制数据的读写 ;而StringIO只能操作字符串 。
这就像文件读写中读写模式 ,如果想进行二进制模式读写,你就得设置mode='b'
除这一点区别外,BytesIO和StringIO的方法完全一样 。
from io import BytesIO
f = BytesIO()
# 因为是二进制读写,所以必须设置编码
f.write('hello python'.encode('utf-8'))
print(f.getvalue())
f.close()
#输出 :
b'hello python'
使用os模块对文件或文件夹进行操作,如新建删除等操作 。
页面更新:2024-04-15
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号