文件访问 python
2023-12-24 07:03:35
一、实验题目
文件访问
二、实验目的
- 了解文件的基本概念和类型。
- 掌握Python中访问文本文件的方法和步骤。
- 熟悉在Python中访问二进制文件的方法和步骤。
三、实验内容
- 编写一个程序,通过键盘将曹操的《观沧海》写入文本文件gch.txt中。
- 创建一个名为grade.csv的文件,通过input()函数向文件中写入学生相关信息,格式为“姓名,性别,年龄,语文成绩,数学成绩,英语成绩”,当输入“-1”时结束输入。统计所有学生的总成绩、排序,并写入新文件statistics.csv中。
- 编写一个程序,分别将一个数字、字符串、列表、元组、字典和集合写入一个二进制文件bFile.dat中,然后从二进制文件bFile.dat中读出并显示。
四、实验步骤
题目一
(1)问题分析(含解决思路、使用的数据结构、程序流程图等)
首先:直接使用with open as file语句访问文本文件,如果有这个文件可以直接写入,如果没有,会建立一个相同名字的文件,然后定义一个字符串,用来输入文本;
最后:直接运行输入文本,运行就可以得到这个文本。
(2)算法/代码描述(基本要求源代码)
with open("D:\pycharm\pycharmproject/gch.txt", "w") as file:
str = input("请输入观沧海的文本:")
num = file.write(str)
(3)运行结果(含执行结果验证、输出显示信息)
题目二
(1)问题分析(含解决思路、使用的数据结构、程序流程图等)
首先:使用csv,得先导入import csv;建一个列表,写入姓名,性别,年龄,语文成绩以及数学成绩,使用while判断,如果是-1则退出,回车则继续,在while中进行输入,使用append将其添加到后面,在这里使用一个异常处理,如果这个文件存在,则写入,如果这个文件不存在则写入失败;
接下来:进行学生的总成绩,并且进行排序,然后进行输出到文件中。
(2)算法/代码描述(基本要求源代码)
import csv
def Write():
headers = ['Name', 'Sex', 'Age', 'chNum', 'maNum']
list1 = [('二哈', '男', 21, 44, 44), ('阿拉斯加', '男', 33, 33, 55), ('泰迪', '女', 22, 34, 25)]
tu = ()
n = None
while (n != '-1'):
t1 = str(input("请输入写入的名字:"))
t2 = str(input("请输入写入的性别:"))
t3 = int(input("请输入写入的年龄:"))
t4 = float(input("请输入写入的语文分数:"))
t5 = float(input("请输入写入的数学分数:"))
tu = (t1, t2, t3, t4, t5)
list1.append(tu)
n = input('任意键回车继续,输入 -1 开始写入:')
try:
with open("D:\pycharm\pycharmproject\grade.csv", "w", encoding='utf-8-sig', newline='') as file:
fw = csv.writer(file)
fw.writerow(headers)
fw.writerows(list1)
print("将文件写入grade.csv成功")
except Exception as ex:
print(ex)
print("将文件写入grade.csv失败")
# 统计所有学生的总成绩、排序,并写入新文件statistics.csv中
def Count():
ch = []
ma = []
chn = 0
man = 0
list1 = []
try:
with open("D:\pycharm\pycharmproject\grade.csv", "r", encoding='utf-8-sig', newline='') as file:
fr = csv.reader(file)
list1 = [li for li in fr]
print("读取文件grade.csv成功")
except Exception as ex:
print(ex)
print("读取grade.csv失败")
try:
with open("D:\pycharm\pycharmproject\statistics.csv", "w", encoding='utf-8-sig', newline='') as file:
fw = csv.writer(file)
list1[0].append('总成绩')
fw.writerow(list1[0])
# 按语文成绩从小到大排名
for x in range(1, len(list1)):
list1[x].append(float(list1[x][3]) + float(list1[x][4]))
print(list1[x])
list1 = sorted(list1[1:], key=lambda x: float(x[3]))
fw.writerows(list1)
print("写入statisticx.csv成功")
except Exception as ex:
print(ex)
print("写入statisticx.csv失败")
(3)运行结果(含执行结果验证、输出显示信息)
题目三
(1)问题分析(含解决思路、使用的数据结构、程序流程图等)
首先:建立一个数字,一个字符串,一个列表,一个元组,一个字典以及一个集合,使用一个data将其联系起来,打开文件,并且写入
(2)算法/代码描述(基本要求源代码)
import pickle
num1 = 6
str1 = "xiaosunzuibang!"
list1 = [2, 0, 0, 0, 0, 1, 0, 6]
tuple1 = ("music", "game", "sports")
dict1 = {'name': 'xiaosun', 'sex': '女'}
set1 = {11, 29}
data = [num1, str1, list1, tuple1, dict1, set1]
with open("D:\pycharm\pycharmproject/bFile.dat", "wb") as bFile:
for i in data:
pickle.dump(i, bFile)
print("写入数据成功!")
with open("D:\pycharm\pycharmproject/bFile.dat", "rb") as bFile:
data1 = pickle.load(bFile)
print("num1:", data1)
data2 = pickle.load(bFile)
print("str1:", data2)
data3 = pickle.load(bFile)
print("list1:", data3)
data4 = pickle.load(bFile)
print("tuple1:", data4)
data5 = pickle.load(bFile)
print("dict1:", data5)
data6 = pickle.load(bFile)
print("set1:", data6)
(3)运行结果(含执行结果验证、输出显示信息)
五、出现的问题及解决的方法
出现的问题
(1)在写入.csv文件时,出现乱码的情况;
(2)在.bat输出的时候,输出错误;
解决的办法
(1)在打开文件时,加入ecoding=’utf-8-sig’;
(2)写入几个类型的数据就需要几个data;
文章来源:https://blog.csdn.net/m0_58837398/article/details/135167965
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!