os模块
#系统内置模块 不需要install
import os
print(os.name) #输出正在使用平台 window-nt linux/unix-posix
print(os.getcwd()) #获取当前脚本工作目录
print(os.listdir()) #获取当前路径下文件列表
#os.chdir('/Users/Documents') #切换到指定路径
#os.remove('m.txt') #删除文件
#返回一个包含路径和文件名的元组
print(os.path.split('/Users/Documents/python/text.txt'))
os.chdir('/Users/Documents/python')
#判断文件或路径是否存在
print(os.path.exists('text.txt')) #在上面已经指定了路径
print(os.path.exists('/Users/Documents/python'))
posix
/Users/Documents/python
['.DS_Store', 'text.txt']
('/Users/Documents/python', 'text.txt')
True
True
文件读取
#选择本地一个txt文件 复制路劲 加‘r’避免路径被转义
path =r'/Users/Documents/python/text.txt'
#open('路径',‘模式’,enconding='编码')
#模式: r:读取文件, 默认:w(写入) rw:读+写(尽量分开用r或w) a:追加
#编码:默认编码cp936 如果文件有指定编码需要指定编码读取 否则可能乱码
f = open(path, 'r')
print('第一次读取开始')
print(f.read())
print('第一次读取结束')
#每次read以后 光标会停留在读取末尾,所以再次读取输出会为空
print('第二次读取开始')
print(f.read())
print('第二次读取结束')
#移动光标位置
f.seek(0)
print('第三次读取开始')
print(f.read(20)) #read参数为位置索引
print('第三次读取结束')
f.seek(0)
print('第四次读取开始')
print(f.readline(5)) #读取光标所在行 可以添加参数指定读取前多少个字符
print('第四次读取结束')
f.seek(0)
print('第五次读取开始')
print(f.readlines()) #返回一个列表
f.seek(0)
for line in f.readlines():
print(line)
print('第五次读取结束')
#关闭文件链接 关闭后无法读取
f.close()
#print(f.read()) #提示:I/O operation on closed file.
第一次读取开始
python文件读取1
python文件读取2
python文件读取3
python文件读取4
python文件读取5
python文件读取6
python文件读取7
第一次读取结束
第二次读取开始
第二次读取结束
第三次读取开始
python文件读取1
python文件
第三次读取结束
第四次读取开始
pytho
第四次读取结束
第五次读取开始
['python文件读取1\n', 'python文件读取2\n', 'python文件读取3\n', 'python文件读取4\n', 'python文件读取5\n', 'python文件读取6\n', 'python文件读取7']
python文件读取1
python文件读取2
python文件读取3
python文件读取4
python文件读取5
python文件读取6
python文件读取7
第五次读取结束
文件写入
os.chdir('/Users/Documents/python')
f_w = open('demo.txt', 'w', encoding='utf8')
f_w.write('haha\n')
#大多数时候是写入一个list
lst = ['xiaoming', 'xiaoli', 'xiaohong']
for i in range(len(lst)):
lst[i] = lst[i] + '\n'
f_w.writelines(lst)
f_w.close() #写入以后要记得close关闭写入 不然程序不知道什么时候写入结束
demo.txt
haha
xiaoming
xiaoli
xiaohong
pickle模块
pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。有时候用py生成的文件并不关注内容是否方便阅读
不想费力的去把数据做各种格式化,加载保存过的pickle文件,可以立刻复原之前程序运行中的对象。
import pickle
import os
os.chdir('/Users/shiqiyuan/Documents/python')
#存储
data = {'a': [1,2,3,4], 'b': 'asda'}
pic = open('data.pkl', 'wb')
pickle.dump(data, pic)
pic.close()
#读取
pic2 = open('data.pkl', 'rb')
data2 = pickle.load(pic2)
print(data2) #{'a': [1, 2, 3, 4], 'b': 'asda'}