Python 基础(十) ——— 文件和异常
意志坚强的人能把世界放在手中像泥块一样任意揉捏。——歌德
路径必须要用 os
- 在 python 中比如路径 user\bin\spanm
import os
result = os.path.join('user', 'bin', 'spanm')
print(result)
# 结果
# user\bin\spanm
- getcwd() 获取当前文件所在的路径
import os
result = os.getcwd()
print(result)
# 结果
# E:\TextCode\Python\PythonTwo
- 查看文件大小 os.path.getsize()
import os
path = 'E:\TextCode\Python\PythonTwo\PythonBasicOne.py'
result = os.path.getsize(path)
print(result)
# 结果
311
- 检查路径有效性 os.path.exists()
import os
path = 'E:\TextCode\Python\PythonTwo\PythonBasicOne.py'
print(os.path.exists(path))
从文件中读取数据
win open
要是读出所有必须加 xxxx.read()
要是逐行读出 必须用 for 循环
要是想把数据保存在列表里就需要 xxxx.readlines()
读取整个文件
- 创建一个文件,文件内容比如
3.14159265
89874361hda8dad12121
987d7ahlui87dalkhcziuc8a7da1
- 读取文件,并显示
利用 with 然后 open 然后 as 最后的结果,打印出结果,要去除右边的空格
with open("read.txt") as file_object:
contents = file_object.read()
print(contents.rstrip())
# 结果
# 3.14159265
# 89874361hda8dad12121
# 987d7ahlui87dalkhcziuc8a7da1
文件路径
- 比如 txt 文本在 son 文件下,可以使用相对路径
with open("son/read.txt") as file_object:
contents = file_object.read()
print(contents.rstrip())
逐行读取
读取的时候通过 for 循环
使用 rstrip()去掉换行和右边的空格
with open("son/read.txt") as file_object:
for line in file_object:
print(line.rstrip())
# 结果
# 3.14159265
# 89874361hda8dad12121
# 987d7ahlui87dalkhcziuc8a7da1
创建一个包含文件的列表
with open("son/read.txt") as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
# 结果
# 3.14159265
# 89874361hda8dad12121
# 987d7ahlui87dalkhcziuc8a7da1
写入文件
with open (路径名,’w’) w 表示写入
读模式可以是 r, 写入模式就是 w,附加模式就是 a,后者能读取或者写入(r+),如果省略 默认就是 r 读
写入空文件
filename = "write.txt"
with open(filename, 'w') as fileitem:
fileitem.write("I love Python")
# 结果
文本里面就会出现 I lovePython
写入多行,写入中文
- 后面需要加上 utf-8 参数
filename = "write.txt"
i = 0
with open(filename, 'w', encoding='utf-8') as fileitem:
while i in range(0, 10):
fileitem.write("这就是第"+str(i)+"变化"+"\n")
i = i+1
print("结束了")
# 结果
这就是第0变化
这就是第1变化
这就是第2变化
这就是第3变化
这就是第4变化
这就是第5变化
这就是第6变化
这就是第7变化
这就是第8变化
这就是第9变化
如果要是附加模式 a 则表示在文件末尾输入
filename = "write.txt"
i = 0
with open(filename, 'a', encoding='utf-8') as fileitem:
while i in range(0, 10):
fileitem.write("这就是我新添加的"+str(i)+"变化"+"\n")
i = i+1
print("结束了")
# 结果
# 这就是第0变化
# 这就是第1变化
# 这就是第2变化
# 这就是第3变化
# 这就是第4变化
# 这就是第5变化
# 这就是第6变化
# 这就是第7变化
# 这就是第8变化
# 这就是第9变化
# 这就是我新添加的0变化
# 这就是我新添加的1变化
# 这就是我新添加的2变化
# 这就是我新添加的3变化
# 这就是我新添加的4变化
# 这就是我新添加的5变化
# 这就是我新添加的6变化
# 这就是我新添加的7变化
# 这就是我新添加的8变化
# 这就是我新添加的9变化
异常
- try-except
异常就是程序执行期间发生的错误,异常是使用 try-except 代码块处理的.try-except 让 python 执行指定的操作,同时告诉 Python 发生异常的时候该怎么办
处理异常
try:
print(5/0)
except:
print("Wrong")
存储数据
使用 json.dump()和 json.load()
- 使用 json.dump()来存储,使用 json.load()用来读
import json
numbers = ["第一个", "第二个", "第三个", "第四个", "第五个", "第六个"]
filename = "numbers.txt"
with open(filename, "w", encoding="utf-8") as item:
json.dump(numbers, item)
# 结果
在numbers.txt里面就会存储["\u7b2c\u4e00\u4e2a", "\u7b2c\u4e8c\u4e2a", "\u7b2c\u4e09\u4e2a", "\u7b2c\u56db\u4e2a", "\u7b2c\u4e94\u4e2a", "\u7b2c\u516d\u4e2a"]
- 使用 json.load()读取
import json
filename = "numbers.txt"
with open(filename, "r", encoding="utf-8")as item:
numbers = json.load(item)
print(numbers)
# 结果
['第一个', '第二个', '第三个', '第四个', '第五个', '第六个']
使用异常来 存储
import json
filename = "numbers2.txt"
try:
with open(filename) as item:
username = json.load(item)
except:
print("没有这个文件")
# 结果
# 没有这个文件