文件访问 python

发布时间:2023年12月24日

一、实验题目

文件访问

二、实验目的

  1. 了解文件的基本概念和类型。
  2. 掌握Python中访问文本文件的方法和步骤。
  3. 熟悉在Python中访问二进制文件的方法和步骤。

三、实验内容

  1. 编写一个程序,通过键盘将曹操的《观沧海》写入文本文件gch.txt中。
  2. 创建一个名为grade.csv的文件,通过input()函数向文件中写入学生相关信息,格式为“姓名,性别,年龄,语文成绩,数学成绩,英语成绩”,当输入“-1”时结束输入。统计所有学生的总成绩、排序,并写入新文件statistics.csv中。
  3. 编写一个程序,分别将一个数字、字符串、列表、元组、字典和集合写入一个二进制文件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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。