1、Open函数使用
在Python中,open()函数是一个非常基本且常用的函数,用于打开文件,并返回一个文件对象。
1.方法一(需要手动关闭打开文件)
# 1.打开并且返回一个文件
f = open("./44.函数的参数.py", mode="r", encoding="utf-8")
# 方法 readable()判断文件是否可读
# 方法 writable()判断文件是否可写
print(f.readable(), f.writable())
# 2.关闭文件
f.close()
结果:
在上述例子中,open()里第一个参数"./44.函数的参数.py"是要打开的文件路径(相对路径),参数mode="r"是文件的打开形式(默认为r可读),'r'可读'w'可写,encoding是文件编码格式。
下列是关于文件的几个常见方法,方法一个一个尝试,读取后光标移动不会自动移至开头。
# 1.打开并且返回一个文件
f = open("./44.函数的参数.py", mode="r", encoding="utf-8")
# 读取整个文件,返回字符串
print(f.read())
# 读取一行 返回字符串
print(f.readline(), type(f.readline()))
# 逐行读取 将结果以字符串的形式放入列表返回
print(f.readlines())
#
# 2.关闭文件
f.close()
2.方法二(会自动关闭文件)
# with open("./1.helloworld.py", mode="r", encoding="utf8") as f:
# print(f.read())
# print(f.readline())
# print(f.readlines())
2、Json与pickle
json和pickle的使用方法相似,但是许多编程语言都支持json语法,所以json序列化的字符串可以被其他语言、数据库反序列化识别,使数据可以跨平台传输。而pickle序列化后的字符串只能由python语言进行反序列化识别。
下列方法使用的数据模型:
datas ={
"id": 10001,
"sid": None,
"score": [
{
"cid": 1001,
"cscore": 80
},
{
"cid": 1002,
"cscore": 80
},
{
"cid": 1003,
"cscore": 80
}
]}
1.有关json序列化的相关方法
# 序列化:将python的数据结构转化为字符串 将python数据保存到文件中
# json.dumps
# 以可写的方式打开当前文件下的hello.txt文件,没有会自动创建。
with open("./hello.txt", "w") as f:
# 读取数据datas,将序列化后字符串赋值给datas_str
datas_str = json.dumps(datas)
# 将序列化后的字符串写入文件,如果文件内有内容会将其覆盖
f.write(datas_str)
print(type(datas_str))
# json.dump
with open("./hello.txt", "w") as f:
# 将数据datas写入打开的文件
json.dump(datas, f)
需要注意"./"代表当前文件夹,"../"代表当前文件夹的父级文件夹
2.有关json反序列化的相关方法
方法loads()
# json.loads
with open("./hello.txt", "r") as f:
# 将从文件中读取的字符串赋值给content
content = f.read()
# 运用json.loads对序列化后的 字符串 进行反序列化
data = json.loads(content)
print(data)
返回我们之前存入的数据结构和类型
方法load()
with open("./hello.txt", "r") as f:
# 直接读取文件,将读到的序列化字符串进行反序列化并返回
data = json.load(f)
print(data)
结果是一样的:
3.pickle(了解即可)
# 只能用于python中,序列化后的编码其他编程语言不能识别
import pickle
datas = {
"id": {},
"address": ["北京", "上海", "杭州"]
}
# with open("pick.txt", "wb") as f:
# datas_str = pickle.dumps(datas)
# f.write(datas_str)
# with open("pick.txt", "wb") as f:
# pickle.dump(datas, f)
# with open("./pick.txt", "rb") as f:
# content = f.read()
# data = pickle.loads(content)
# print(data)
# with open("./pick.txt", "rb") as f:
# data = pickle.load(f)
# print(data)
3、Os模块
python中os模块提供了许多与操作系统交互的功能,这里介绍文件和目录的操作
1.文件和目录操作
import os
# print(os)
# # 当前 current
# print(os.curdir)
# # 父级路径 parent
# print(os.pardir)
# # \\转义一个\
# print(os.listdir("f:\\book"))
# 创建文件夹
# os.mkdir("")
# # 删除文件夹
# os.rmdir("")
# 切换文件夹
# os.chdir()
# 打印cpu的数量
# print(os.cpu_count())
# print(os.curdir)
# print(os.pardir)
# 打印当前目录下的文件信息
# print(os.listdir())
# print(os.listdir("f:"))
# # 切换至f盘
# os.chdir("f:")
#
# # 显示f盘的文件信息
# print(os.listdir())
# # 在f:\book文件夹下创建文件hello
# os.mkdir("f:\\book\\hello")
# # 展现f:\hello下的文件信息
# print(os.listdir("f:\\book"))
# # 删除f:\book文件夹下的文件hello
# os.rmdir("f:\\book\\hello")
# print(os.listdir("f:\\book"))
# print(os.cpu_count())
2.文件属性
# # 判断路径或文件是否存在
# print(os.path.exists("g:"))
# 获取当前文件的绝对路径
# print(os.path.abspath("."))
# print(os.path.abspath(os.curdir))
# # 获取当前文件父级路径的绝对路径
# print(os.path.abspath(os.pardir))
# 切换至"f:\\book"
# print(os.chdir("f:\\book"))
# 将最后的文件或文件夹与其父级路径切割
# print(os.path.split("f:\\book"))
# # 返回传入路径的父级路径
# print(os.path.dirname("f:\\book\\hello"))
# # 将传入的字符串拼接成路径
# print(os.path.join("f:/", "book", "hello"))