自学内容网 自学内容网

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)!