文章目录
- 一、文件的读取
- 二、文件内容的写入
- 三、之操作文件夹
- 四、StringIO与BytesIO
一、文件的读取
在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 osos.mkdir("test\\py")
创建多级文件夹
import osos.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 BytesIOstring_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"))