读写文件
我们唯一不会改正的缺点是软弱。——拉罗什福科
文件路径
- 检查路径有效性: os.path.exists()
import os
path = 'E:\TextCode\mdall\PythonBasic1.md'
result = os.path.exists(path)
print(result)
# 结果
# True
- 拼接路径 os.path.join
import os
result = os.path.join('user', 'bin', 'spanm')
print(result)
# 结果
# user\bin\spanm
- 查看文件大小 os.path.getsize(路径)
import os
path = 'E:\TextCode\mdall\PythonBasic1.md'
result = os.path.getsize(path)
print(result)
- 创建新的文件夹 makedirs
import os
os.makedirs('./haha') # 相对路径
# 结果就是在当前目录下创建一个haha的文件夹
- 获取当前路径 getcwd()
import os
result = os.getcwd()
print(result)
# 结果
# E:\TextCode\Python\Python4
切换为包含数据文件的文件夹 chdir(路径)
路径一定是反斜杠 ‘/‘
import os
os.chdir('E:/TextCode/files') # 改变路径
result = os.getcwd() # 获取当前路径
print(result)
# 结果
# E:\TextCode\files
文件打开和读写
文件读
- 基本语法
with open(路径,'读(r)或写(w)或后面插入(a)') as 变量名
# readline 仅仅只读1行
# readlines 一行一行读,也可以换成read()那它是一个一个读
# xxx = 变量名.read()
xxx = 变量名.readlines()
#一般情况里面跟for 循环
for item in xxx:
print(xxx.rstrip()) # 取消掉\r\n
- 具体的写法
with open('text1.txt', 'r', encoding='utf-8') as data:
content = data.readlines() # 结果就是list
print(content.rstrip())
- 逐行读,readlines()
result = []
with open('text1.txt', 'r', encoding='utf-8') as data:
content = data.readlines() # 结果就是list
print(content)
print("--------------\r\n")
for item in content:
result.append(item.rstrip()) #取消掉右边的\r\n
result.pop() # 会多出一个\n所以去掉
print(result)
- 若是 JSON 文件 可以使用 json.load 直接读
with open('data.json', 'r', encoding='utf-8') as data:
print(json.load(data))
# 这样读取出来就是个json文件
文件写入
- 基本语法
with open(路径, "w", encoding="utf-8") as data:
data.write(xxxxx)
- 用到例子上
with open("text3.txt", "w", encoding="utf-8") as data:
for index in range(5):
data.write("测试写了"+str(index)+"次"+"\n")
# 结果
- 附加模式,已经有文件 从后面加入
with open("text3.txt", "a", encoding="utf-8") as data:
for index in range(5):
data.write("测试写了"+str(index)+"次"+"\n")
# 结果
# 他就是在文件的最后加入数据
JSON 模块
json.dumps() 将对象变成字符串
json.loads() 将字符串变成对象
———文件不需要加 S——–
json.dump() 将对象编程字符串,并写入文件中去
json.load() 用户从 JSON 文件中读取数据
json.dump 和 json.load
从文件中读取数据后写入文件
ensure_ascii=False 表示不要把 asc 码转换
import json
with open('data.json', 'r', encoding='utf-8') as data:
content = json.load(data)
with open('text4.txt', 'w', encoding='utf-8') as data2:
json.dump(content, data2, ensure_ascii=False)
json.dumps 和 json.loads
- json.dump
import json
obj = {
"name": "哈哈哈",
"Sex": "男"
}
result = json.dumps(obj)
print(type(result))
# 结果就是string
- json.loads
import json
obj = '{"name": "哈哈哈","Sex": "男"}'
result = json.loads(obj)
print(type(result))
# 结果就是dict