Python 基础(十)文件和异常

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("没有这个文件")

# 结果
# 没有这个文件

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录