Python︱文件和异常

从文件中读取数据

# pi_digits.txt
3.1415926535
  8979323846
  2643383279

# file_reader.py
filename = 'pi_digits.txt'

with open(filename) as file_object:
    # 读取整个文件
    # contents = file_object.read()
    # # rstrip()删除末尾的空行
    # print(contents.rstrip())
    # print('hello')

    # 逐行读取
    # for line in file_object:
    #     print(line.rstrip())

    # 将文件各行存储在一个列表中
    lines = file_object.readlines()
for line in lines:
    print(line.rstrip())
    
# pi_string.py
filename = 'pi_digits.txt'

with open(filename) as file_object:
    lines = file_object.readlines()

# 使用文件的内容
pi_string = ''
for line in lines:
    pi_string += line.strip()

print(pi_string)
print(len(pi_string))
  1. 关于filename,是以当前工作目录为基点的文件路径,可以使用相对/绝对路径。在Windows系统中,在文件路径中应该使用反斜杠(),在Linux系统使用斜杆(/)
  2. 关键字with,会在不需要访问文件后自动将其关闭。
  3. read()到达文件末尾时会返回一个空字符串,要删除末尾的空行,可以在print语句中使用rstrip()
  4. 对于行16,逐行读取,可以使用行17-18的方式
  5. 将文件内容各行存储在一个列表中,方便在with块之外使用,详细见行20-23
  6. 使用文件的内容,行34,strip()可以将字符串里的空格也去掉

写入文件

# write_message.py
filename = "text_files/programming.txt"

with open(filename,'w') as file_object:
    file_object.write("I love programming.\n")
    file_object.write("I love creating new things.")
  1. 调用open( )时提供了两个实参,第一个是要打开的文件名称。第二个实参是确定读写模式。可以指定读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)或让你能够读取和写入文件的模式(‘r+’)。默认为读取模式。
  2. 写入多行需要在write( )语句中包含换行符。
  3. 以附加模式打开文件时,Python不会在返回文件对象前清空文件。

异常

try:
    print(5 / 0)
except ZeroDivisionError:
    print("You can't divide by zero!")
else:
    print("可以正常运行")

最基本的结构是try-except代码块,如果try出错,便执行except,否则跳过。

在此基础上,还可以包含一个else代码块,依赖于try代码块成功执行的代码都应放到else代码块中。

存储数据

模块json能将简单的Python数据结构转存到文件中,并在程序再次运行时加载该文件中的数据。

# number_write.py
import json

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

filename = 'name.json'
with open(filename, 'w') as f_obj:
    json.dump(numbers, f_obj)
    
# number_read.py
import json

filename = 'name.json'
with open(filename) as f_obj:
    numbers = json.load( f_obj)
    
print(numbers)

json.dump()将数字列表存储到文件中,json.load()加载存储在文件中的信息。

import json

# 如果以前存储了用户名,就加载它
# 否则,就提示用户输入用户名并存储它
filename = 'username.json'
try:
    with open(filename)as f_obj:
        username = json.load(f_obj)
except FileNotFoundError:
    username = input("What is your name?")
    with open(filename, 'w') as f_obj:
        json.dump(username, f_obj)
        print("We'll remember you when you come back, " + username + "!")
else:
    print("Welcome back, " + username + "!")

上面例子实现了保存和读取用户生成的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦晨涌京

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值