使用with在python程序中进行文件读取、写入和存储

part1.文件读取

file_name = "pi_digits.txt"

with open(file_name) as file_object:
	contents = file_object.readlines()

print(contents)    
  1. open('pi_digits.txt')返回一个表示文件pi_digits.txt的对象,Python将这个对象存储在变量file_object中。
  2. 关键字with在不再需要访问文件后将其关闭。with open(“name.txt”)相当于open() + close()
  3. 使用关键字with时, open()返回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件对象存储在一个列表中,并在with代码块外使用该列表。contents = file_object.readlines() 即表示将文件对象存储在列表contents中。
  4. 读取文本文件时, Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数int()将其转换为整数,或使用函数float()将其转换为浮点数。
  5. 打开文件时,可指定读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)、读取为二进制模式(‘rb’)、写入为二进制模式(‘wb’)或让你能够读取和写入文件的模式(‘r+’)。如果你省略了模式实参,Python将以默认的只读模式打开文件。
  6. .read()用于文件对象(open打开文件并读取,返回一个对象,并将对象存储为一个变量ob,ob.read());不能用于字符串str,str.read()是错误语法。
  7. 以下数字,每行末尾包含一个隐含的换行符,print()语句自带一个换行符,共两个换行符,strip()语句只能去除前者,去除不了后者。
    3.1415926535
    8979323846
    2643383279

part2.写入文件

filename = 'programming.txt'

with open(filename, 'w') as file_object:
    file_object.write("I love programming.")
  1. 以(“w”)或(“a”)模式打开文件时,如果programming.txt不存在,函数open()将自动创建它。
  2. 以写入(“w”)模式打开文件时千万要小心,因为如果指定的文件已经存在内容,Python将在返回文件对象前清空该文件。
  3. 如果给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。以附加模式(“a”)打开文件时,Python不会在返回文件对象前清空文件,写入到文件的行都将添加到文件末尾。
  4. Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。

part3.使用json存储数据

import json

file_name = "username_digits_data.json"

with open(file_name) as ud_obj1:
	username_digits_data = json.load(ud_obj1)
	
username = input("Please input your name: ")
username_digits_data[username] = input("Please input your favorite digit: ")

with open(file_name, "w") as ud_obj2:
  	json.dump(username_digits_data, ud_obj2)
  1. json.load() 读取数据
  2. json.dump() 写入数据
  3. json.load()json.dump() 接受两个实参:要存储的数据以及可用于存储数据的文件对象。

.read()

(我的理解)

3.1415926535
  8979323846
  2643383279
  1. 不用.read(),直接展示变量object
with open(file_name) as file_object:
	for line in file_object:
		print(line)
		
3.1415926535

  8979323846

  2643383279
  1. 用.read(),将变量存储起来
with open(file_name) as file_object:
	contents = file_object.readline()

print(contents)

for line in contents:
	print(line)

# object.read() 读取原文件,一个数字存储为一个元素,读取后和原文件的形式相同
3.1415926535
  8979323846
  2643383279
3
.
1
4
1
5
9
2
6
5
3
5


 
 
8
9
7
9
3
2
3
8
4
6


 
 
2
6
4
3
3
8
3
2
7
9

# object.readline() 读取原文件的第一行,一个数字存储为一个元素
3.1415926535

3
.
1
4
1
5
9
2
6
5
3
5

# object.readlines() 读取原文件,一行作为一个元素存储在一个列表中。末端的换行符也会被读取。
['3.1415926535\n', '  8979323846\n', '  2643383279']
3.1415926535

  8979323846

  2643383279

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值