Python 入门日记(十)—— 文件和异常

2020.07.17 Python 入门的 Day9

成就:Python 中的文件操作和异常处理

  • 读取整个文件:with open(file_name) as file_object:
with open('pi_digits.txt') as file_object:
    contents = file_object.read()
# pi_digits.txt 中的内容会以字符串的形式存在 contents 中
    print(contents.rstrip())
  • contents 后面会自动跟一个换行符。
  • with open 的好处是,Python 可以根据情况自行判断何时关闭文件。
  • 要以每次一行的方式检查文件,可对文件对象使用 for 循环:
filename = 'pi_digits.txt'

with open(filename) as file_object:
    for line in file_object:
        print(line.rstrip())
# 每一行都以字符串的形式存在
  • 每一行的字符串后面都会自动跟上一个换行符。
  • 创建一个包含文件各行内容的列表:
filename = 'pi_digits.txt'

with open(filename) as file_object:
    lines = file_object.readlines()
# 使用方法 readlines() 使文件中的每一行作为一个字符串
# 这些字符串组成一个列表 lines
for line in lines:
    print(line.rstrip())
  • 可使用方法 replace() 将字符串中的特定单词全部都替换为另一个单词。
message = 'I like dogs and dogs'
message.replace('dogs', 'cats')
print(message.replace('dogs', 'cats'))
# 全部替换
  • 如果将文本写入文件,在调用 open() 时需要提供另一个实参。
  • 读取模式为 'r,写入模式为 'w',附加模式为 'a',读取和写入为 'r+'。
  • 如果省略第二个实参,Python 默认以只读模式打开文件。
  • 如果要写入的文件不存在,函数 open() 会自动创建他。
  • 当使用 'w' 模式时,Python 会先将原来的内容清空。
  • Python 只能将字符串写入文本文件,如果要写入数值,要使用 str()。
  • 使用附加模式 'a' 时,Python 会在原文件的后面继续写入。
  • 使用 try—except—else 代码块处理 ZeroDivisionError 异常:
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")

while True:
    first_number = input("
First number: ")
    if first_number == 'q':
        break
    second_number = input("Second number: ")
    if second_number == 'q':
        break
    try:
        answer = int(first_number)/int(second_number)
    except ZeroDivisionError:
        print("You can't divide by 0!")
    else:
        print(answer)
# 如果 answer = int(first_number)/int(second_number) 出现除零的异常
# 代码会执行 print("You can't divide by 0!")
# 如果没有出现异常,执行 print(answer)
  • 使用 try—except—else 代码块处理 FileNotFoundError 异常:
file_name = 'alice.txt'

try:
    with open(file_name) as f_oj:
        contents = f_oj.read()
except FileNotFoundError:
    msg = "Sorry, the file " + file_name + " donesn't exist."
    print(msg)
  • 方法 split() 以空格为分隔符将字符串拆分成多个部分,并将这些部分都存储到一个列表中。
  • 使用方法 split() 可以大致统计一篇文章中的单词个数。
  • 如果希望发生异常时程序一声不吭,可使用语句 pass。
file_name = 'alice.txt'

try:
    with open(file_name) as f_oj:
        contents = f_oj.read()
except FileNotFoundError:
    pass
  • 模块 json 可以让 Python 数据转存到文件中。
  • 写入:json.dump();读出:json.load()。
import  json

numbers = [2, 3, 5, 7, 11, 13]

filename = 'number.json'
with open(filename, 'w') as f_oj:
    json.dump(numbers, f_oj)
# 将 numbers 写入文件 number.json 中。

with open(filename) as f_oj:
    numberss = json.load(f_oj)
# 从文件 number.json 中读出数据到 numberss 里
print(numberss)
原文地址:https://www.cnblogs.com/A-Tree/p/13332873.html