【Python与AI基础】Python编程基础:文件读写操作

58 阅读4分钟

【Python与AI基础】Python编程基础:文件读写操作

www.bilibili.com/video/BV1oe…

一、 基本操作
1、读写
#  基本操作:读取文件内容并输出
f = open('./Test.txt', mode='r')
content = f.read()
print(content)
f.close()
# 写入文件内容
f = open('./Test.txt', mode='a')
f.write("\nHello Woniu !!!")
f.close()
# 写入新文件,并使用GBK的编码
f = open('./Temp.txt', mode='w', encoding='GBK')
f.write("这是一个牛逼的文件\n通过事先设定某个特定场景下的特定问题\n来探求该场景下的各种可能的解决方案\n")
f.close()
2、读写模式
模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
二、其他用法
f = open('./Temp.txt', encoding='GBK')
content = f.read(20)      # 指定读取文件的内容长度
content = f.readline()    # 按行读取文件内容,默认读取第1行
content = f.readlines()     # 按行全部读取并且将每一行保存到列表中
print(content)
# 也可以使用f.read()读取所有内容,使用 \n 作为分隔符,调用split进行列表处理
content = f.read()
list = content.split('\n')
print(list)
f.close()
三、读取CSV
# CSV文件的读写:逗号分隔符,用于表示二维表的数据结构
# 将CSV文件变成Python的列表+字典的格式 [{},{},{}]
f = open('./userpass.csv')
line_list = f.readlines()
user_list = []
# username, password, expect   # 如何动态读取第一行数据,并且变成列名
for i in range(1, len(line_list)):
    line = line_list[i].strip()
    username = line.split(',')[0]
    password = line.split(',')[1]
    expect = line.split(',')[2]
    user_dict = {}
    user_dict['username'] = username
    user_dict['password'] = password
    user_dict['expect'] = expect
    user_list.append(user_dict)
print(user_list)
四、使用with语句
# 使用 with 自动处理资源关闭的问题
with open('./Temp.txt') as f:
    content = f.read()
print(content)
# 读取二进制文件时,需要使用 rb 
with open('D:/emergency.jpg', mode='rb') as f:
    content = f.read()
print(content)

作业:如何动态读取第一行数据,并且变成列名(字典的键),而不是使用硬编码。