Python进阶之IO操作
一、文件的读取
在python里面,可以使用open函数来打开文件,具体语法如下:
open(filename, mode)
filename:文件名,一般包括该文件所在的路径
mode 模式 如果读取时读取中文文本
需要在打开文件的时候使用encoding指定字符编码为utf-8
open函数的mode参数:
读取文件的内容,使用read相关方法
使用read方法,读取文件的全部内容(如果文件较大,一次性读取可能会导致内存不足
此时需要指定使用readline方法,读取文件的一行
readlines()一次读取所有内容并按行返回list
file = open("D:\class.txt", "r" ,encoding="utf-8")
print(file.read())
print(file.readline())
注意事项:
每次打开文件完成相应操作之后,都必须关闭该文件,且因为文件在读写过程中可能出现IOError
而导致文件不能正常关闭,所以每次读写文件时,必须使用try finally语法包裹,使其最终都能正
常关闭文件
try:
file = open("D:\class.txt", "r" ,encoding="utf-8")
print(file.read())
print(file.readline())
finally:
file.close()
二、文件内容的写入
同样的写入文件内容时,需要些使用open打开文件,相应的mode指定为可写入,之后可以使用write函数进行文件的写入
try:
file = open("D:\class.txt", "w", encoding="utf- 8")
file.write("123456")
finally:
file.close()
使用这种方法,确实可以进行文件的写入,但是每次打开之后,会发现原来所有的文本内容均被覆盖,如果想保留原来的内容,只是在文件的后追加内容,这个时候使用参数a,表示append,用于追加
try:
file = open("D:\class.txt", "a", encoding="utf- 8")
file.write("789")
finally:
file.close()
三、之操作文件夹
创建文件夹
可以使用os.mkdir(dir_name)来在当前目录下创建一个目录
import os
os.mkdir("test\\py")
创建多级文件夹
import os
os.mkdir("test\\py\\demo")
获取当前所在目录
import os
print(os.getcwd())
改变当前的工作目录
import os
os.chdir("test")
print(os.getcwd())
删除空文件夹
import os
os.rmdir("test")
删除多层空文件夹
import os
os.removedirs("test\\java")
四、StringIO与BytesIO
当不需要往新建文件并写入,我只想直接在内存中缓存这些文本,此时StringIo,BytesIo就派上用场了
StringIo,BytesIo均属于io包下(3.7环境),均用于像操作文件一样,临时在内存中缓存文本,两者
api与直接进行问下文件io的操作相似。StringIO跟ByteIo的区别在于前者写入字符串,后者写入二进
制
每次使用完StringIO之后,都必须显式进行关闭,也可使用with语法
from io import StringIO
from io import BytesIO
string_io = StringIO()
string_io.write("helloworld")
print(string_io.getvalue())
string_io.close()
with StringIO() as string_io:
string_io.write("hello")
string_io.write("world")
print(string_io.getvalue())
print(string_io.closed)
byte_io = BytesIO()
byte_io.write("中国".encode("utf-8"))
byte_io.write("台湾".encode("utf-8"))
print(byte_io.getvalue())
print(str(b'\xe4\xb8\xad\xe5\x9b\xbd\xe5\x8f\xb0\xe6\xb9\xbe',"utf-8"))
原文地址:https://blog.csdn.net/m0_58878709/article/details/143577588
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!