part1.文件读取
file_name = "pi_digits.txt"
with open(file_name) as file_object:
contents = file_object.readlines()
print(contents)
open('pi_digits.txt')
返回一个表示文件pi_digits.txt的对象,Python将这个对象存储在变量file_object中。- 关键字with在不再需要访问文件后将其关闭。with open(“name.txt”)相当于open() + close()
- 使用关键字with时,
open()
返回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件对象存储在一个列表中,并在with代码块外使用该列表。contents = file_object.readlines()
即表示将文件对象存储在列表contents中。 - 读取文本文件时, Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数int()将其转换为整数,或使用函数float()将其转换为浮点数。
- 打开文件时,可指定读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)、读取为二进制模式(‘rb’)、写入为二进制模式(‘wb’)或让你能够读取和写入文件的模式(‘r+’)。如果你省略了模式实参,Python将以默认的只读模式打开文件。
.read()
用于文件对象(open打开文件并读取,返回一个对象,并将对象存储为一个变量ob,ob.read()
);不能用于字符串str,str.read()
是错误语法。- 以下数字,每行末尾包含一个隐含的换行符,print()语句自带一个换行符,共两个换行符,strip()语句只能去除前者,去除不了后者。
3.1415926535
8979323846
2643383279
part2.写入文件
filename = 'programming.txt'
with open(filename, 'w') as file_object:
file_object.write("I love programming.")
- 以(“w”)或(“a”)模式打开文件时,如果programming.txt不存在,函数open()将自动创建它。
- 以写入(“w”)模式打开文件时千万要小心,因为如果指定的文件已经存在内容,Python将在返回文件对象前清空该文件。
- 如果给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。以附加模式(“a”)打开文件时,Python不会在返回文件对象前清空文件,写入到文件的行都将添加到文件末尾。
- 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)
json.load()
读取数据json.dump()
写入数据json.load()
和json.dump()
接受两个实参:要存储的数据以及可用于存储数据的文件对象。
.read()
(我的理解)
3.1415926535
8979323846
2643383279
- 不用.read(),直接展示变量object
with open(file_name) as file_object:
for line in file_object:
print(line)
3.1415926535
8979323846
2643383279
- 用.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