一.文件操作介绍
文件的作用
一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电脑之后,“哭都没地方哭了”。 默认数据是加载到内存中,结果也是保存到内存中, 程序执行结束,所有的数据释放。
文件的打开
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。
open(文件名,访问模式) e.g. f = open(‘test.txt’, ‘w’)
如果文件不存在那么创建,如果存在那么就先清空,然后写入数据
文件操作
文件操作基本:
"""
mode:
r: 只能读文件
w: 只能写入(清空文件内容)
a+: 读写(文件追加写入内容)
"""
#1.打开文件
f = open('hello.txt',mode='a') ##文件是自己建立在当前目录,w写,a追加
#2.文件读写操作
f.write('java\n')
#3.关闭文件(核心:打开之后必须关闭)
"""
方法一:
调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,
并且操作系统同一时间能打开的文件数量也是有限的:
"""
f.close()
with和seek
"""
with语句:python中的with语句使用于对资源进行访问的场合,
保证不管处理过程中是否发生错误或者异常都会自动执行规定的(“清理”)操作,
释放被访问的资源,比如有文件读写后自动关闭、线程中锁的自动获取和释放等。
seek:seek(offset, from)有2个参数: offset:偏移量 from:方向
0:表示文件开头;
1:表示当前位置;
2:表示文件末尾
1). 把位置设置为:从文件开头,偏移5个字节
2). 把位置设置为:文件最开始
3). 把位置设置为:文件最末尾
"""
with open('hello.txt','w+') as f: #w+先清空在写
f.write('hello westos\n') ##写入文件 #先清空原来的hello,写入hello westos
f.seek(0,0) ##移动指针到文件最开始
print("当前指针的位置:",f.tell())
f.seek(0,2) ##移动指针到文件末尾
print("当前指针的位置:", f.tell())
print(f.read()) ##读取文件内容
二.os模块
os,语义为操作系统,处理操作系统相关的功能,可跨平台。 比如显示当前目录下所有文件/删除某个文件/获取文件大小……
#1.获取主机信息
import os
import platform
print(os.name)
#print(os.uname)
#获取主机信息,windows系统使用platform,linux使用os模块
print(platform.uname())
# 3. 获取系统环境变量
envs = os.environ
#os.environ.get('PASSWORD')从环境变量里面获取某种特殊变量值
#os.getenv('PASSWORD')
print(envs)
#4.path
os.path
#5.目录名和文件名拼接
#os.path.dirname 获取某个文件对应的目录名
#__file__当前文件
#join拼接,将目录名和文件名拼接起来。
#rename(需要修改的文件名, 新的文件名)
BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR) #D:/pycharm pro/项目存储/2-6 内置数据结构3
setting_file = os.path.join(BASE_DIR,'dev.conf')
new_file = os.rename('hello.txt','hello1.txt')
os.remove('hello1.txt')
print(setting_file)
#6.创建目录和删除目录
os.makedirs()
os.mkdir()
os.rmdir()
#7. 创建文件删除文件
os.mknod('hello.txt')
os.remove('hello.txt')
#8.判断文件或者目录是否存在
os.path.exists('hello.txt')
#9.分离后缀名和文件名
os.path.splitext('hello1.txt')
os.path.split('hello1.txt')
#10.将目录名和文件名分离
os.path.split('D:/pycharm pro/项目存储/2-6 内置数据结构3')
注意:
os模块中的rename()可以完成对文件的重命名操作。格式为:rename+(需要修改的文件名, 新的文件名)
os模块中的remove()可以完成对文件的删除操作。格式为:remove+(待删除的文件名)
三.json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。
这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
python 中str类型到JSON中转为unicode类型,None转为null,dict对应object;
pyhton中的集合不能转成json格式。
import json
#1.将python对象编码成json字符串
users = {'user1':'westos',"age":18,"city":"西安"}
json_str = json.dumps(users)
with open('doc/hello.json','w') as f:
#ensure_ascii=False 中文可以存储成功
#indent=4缩进为4个空格
json.dump(users,f,ensure_ascii=False,indent=4)
print(json_str,type(json_str))
#2.将json字符串解码成python对象
with open('doc/hello.json') as f:
python_obj = json.load(f)
print(python_obj)