os,Operating System,也就是操作系统的意思,这个模块封装了一些操作系统对文件、文件夹的操作。要想使用这个模块里面的方法需要想导入这个模块。
一些基本例子
判断文件是否存在:os.path.exist(文件路径)
文件重命名:os.rename(原文件名字,新文件名字)
删除文件:os.remove(文件路径)
创建文件:使用with open()as即可
创建文件夹:os.mkdir( 文件夹路径 )
得到当前程序所在的路径:os.getcwd()
改变路径:os.chdir(路径)
得到当前目录的基本信息:os.listdir( 路径名字 )
删除空目录:os.rmdir( 目录所在路径 )
list等存文件
使用open()打开文件之后,可以使用write()写入文件数据,但是写入的只能是字符串。因此list、dict、tuple等高级数据类型不能直接写入文件,虽然可以通过str()将其强制转换成字符串来达到写入文件的目的,但是写入的数据已经完全变成字符串,丢掉了原有的数据类型导致读文件的时候无法知晓文件中原由的数据类型是怎样的。此时为了达到顺利写入文件并读出文件需要使用序列化和反序列化的知识点。
序列化和反序列化暂时不在这里讲述,下面讲一下eval()方法。它可以把一串字符按它的外在形式做相应的转化。
list1 = [{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"}]
with open("write.txt","w") as f:
f.write(str(list1))
结果:
在write.txt文件中会有内容:
[{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}, {'key4': 'value4'}]
接下来读取write.txt并还原成原来数据类型
with open("write.txt","r") as f:
content = f.read()
print("content:",content)
print("type(content):",type(content))
print("-" * 20)
result = eval(content)
print("type(result):",type(result))
print("result:",result)
结果:
content: [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}, {'key4': 'value4'}]
type(content): <class 'str'>
--------------------
type(result): <class 'list'>
result: [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}, {'key4': 'value4'}]