文章目录
- 一、os模块
- 二、pickle模块:可以保存任何Python对象
一、os模块
- os模块
函数名 | 使用方法 |
| 返回当前的目录 |
| 改变工作目录 |
| 列举指定目录中的文件名(’.‘表示当前目录,’. .'表示上一级目录) |
| 创建单层目录,如果目录存在抛出异常 |
| 递归创建多层目录,如果目录已存在则抛出异常 |
| 删除文件 |
| 删除单层目录,如果该目录非空则抛出异常 |
| 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常 |
| 将文件old重命名为new |
| 运行系统的shell命令 |
import os
os.getcwd() #获取应用程序的工作目录
os.listdir() #获取当期目录下有哪些文件和子目录
os.mkdir('test') #用于创建文件夹,如果该文件夹存在就抛出FileExistsError异常
os.makedirs(r".\test1\b\c") #用于创建多层目录
os.listdir() #返回结果:['.idea', 'Spider', 'test', 'test.txt', 'test1', 'venv']
os.remove('test.txt') #用于删除指定的文件
os.rmdir('test') #用于删除目录
os.removedirs(r"test1\b\c") #用于删除多层目录
os.renames('a','b') #修改文件‘a’的名字为‘b’
walk(top)函数遍历top参数下的所有子目录,并将结果返回一个三元组
(路径,[包含目录],[包含文件])
for i in os.walk('a'):
print(i)
#返回结果:
('a', ['b'], [])
('a\\b', ['c'], [])
('a\\b\\c', [], [])
表示:a 文件包含 b 文件,b 文件包含 c 文件
- os.path模块
os.path.dirname(r'a\b\c\test.txt') #获取路径名:'a\\b\\c'
os.path.basename(r'a\b\c\test.txt') #获取文件名'test.txt'
#将路径名和文件名组合成一个完整的路径'C:\\Python34\\Test\\test.txt'
os.path.join(r"C:\Python34\Test","test.txt")
os.path.split(r"C:\Python34\Test\test.txt") #分割路径和文件名('C:\\Python34\\Test', 'test.txt')
os.path.splitext(r"C:\Python34\Test\test.txt") #分割文件名和扩展名('C:\\Python34\\Test\\test', '.txt')
# 获取文件的尺寸,返回值以字节为单位,0
os.path.getsize(r".\a\b\c\test.txt")
二、pickle模块:可以保存任何Python对象
从一个文件里读取字符串非常简单,但如果想要取出数值,就有点困难。因为 read()
和 readline()
方法,都是返回一个字符串,如果从字符串提取数值,可以使用 int()
或 float()
将字符串强制转换为具体的数值。
保存文本很简单,但是当要保存的数据像列表、字典甚至是类的实例这些复杂的数据类型时,普通的文件操作就行不通。如果将这些都转换为字符串,再写入文本文件,但是将这个过程反过来,则会异常麻烦
此时可以利用 pickle
这个模块,这个模块可以将 Python对象都转化为二进制的形式存放,这个过程称为 pickling
,从二进制转换回对象的过程称为 unpickling
- 将列表永久保存,此时打开的文件一定要使用二进制的形式打开
import pickle
test_list = [1,'a','test']
with open('test.pkl','wb') as pickle_file:
pickle.dump(test_list,pickle_file)
打开保存的 test.pkl 文件,发现乱码(保存的二进制形式)
2. 使用时只需要二进制模式先把文件打开,然后用 load 把数据加载进来
import pickle
with open('test.pkl','rb') as pickle_file:
test_list = pickle.load(pickle_file)
print(test_list)
运行结果: