一、实验目的和要求
1.掌握文件的读写方法以及打开和关闭等基本操作。
2.掌握一二维数据的存储格式和读写方法。
3.运用json库进行数据的维度转换。
实验内容与过程
在excel里录入如下学生信息,并另存为“学生信息表.csv”(另存为时,保存类型选择CSV)。并按以下步骤进行操作
从CSV文件中读取数据,去掉内容中的逗号,打印到屏幕。
import csv
with open('E:/VS codew/27py4/学生信息表.csv',encoding='utf-8',newline='') as csvfile:
rows=csv.reader(csvfile)
for row in rows:
print(' '.join(row))
将数据['17010002', '赵四', '女', '自动化1701']追加到“学生信息表.csv”文件
import csv
import weakref
csvfile = open('学生信息表.csv',"a+",encoding='utf-8')
writer =csv.writer(csvfile)
writer.writerow(['17010002','赵四','女','自动化1701'])
csvfile.close()
将“学生信息表.csv”由CSV格式转换成JSON格式。
import json
import csv
fr=open("学生信息表.csv","r",encoding='utf-8')
ls=[]
for line in fr:
line=line.replace("\n","")
ls.append(line.split(","))
fr.close()
fw=open("学生信息表.json","w",encoding='utf-8')
for i in range(1,len(ls)):
ls[i]=dict(zip(ls[0],ls[i]))
b = json.dumps(ls[1:],sort_keys=True,indent=4,ensure_ascii=False)
print(b)
fw.write(b)
fw.close()
编写程序,根据文件data.txt中的数据,使用turtle库来动态绘制图形路径。
import turtle
from unittest import result
def main():
turtle.setup(800,600,0,0)
turtle.pencolor("red")
turtle.width(5)
turtle.speed(1)
result=[]
file=open("E:/VS codew/27py4/2.py/data.txt","r")
for line in file:
result.append(list(map(float,line.split(','))))
print(result)
for i in range(len(result)):
turtle.pencolor((result[i][3],result[i][4],result[i][5]))
turtle.forward(result[i][0])
if result[i][1]:
turtle.rt(result[i][2])
else:
turtle.lt(result[i][2])
turtle.goto(0,0)
turtle.done()
main()
编写程序将电子邮件EmailAddressBook.txt和电话薄TeleAddressBook.txt合并为一个完整的通讯录AddressBook.txt
def main():
file1=open('E:/VS codew/27py4/27py4.3.py/TeleAddressBook.txt',encoding='utf-8')
file2=open('E:/VS codew/27py4/27py4.3.py/EmailAddressBook.txt',encoding='utf-8')
file1.readline()
file2.readline()
lines1=file1.readlines()
lines2=file2.readlines()
list1_name=[]
list1_tele=[]
list2_name=[]
list2_email=[]
for line in lines1:
elements =line.split()
list1_name.append(elements[0])
list1_tele.append(elements[1])
for line in lines2:
elements=line.split()
list2_name.append(elements[0])
list2_email.append(elements[1])
lines=[]
lines.append('姓名\t 电话\t 邮箱\n')
for i in range(len(list1_name)):
s=''
if list1_name[i] in list2_name:
j=list2_name.index(list1_name[i])
s='\t'.join([list1_name[i],list1_tele[i],list2_email[j]])
s+='\n'
else:
s='\t'.join([list1_name[i],list1_tele[i],' ----- '])
s+='\n'
lines.append(s)
for i in range(len(list2_name)):
s=''
if list2_name[i] not in list1_name:
s='\t';join([list2_name[i],' ----- ',list2_email[i]])
s+='\n'
lines.append(s)
file3=open('E:/VS codew/27py4/27py4.3.py/AddressBook.txt','w',encoding='utf-8')
file3.writelines(lines)
file3.close()
file1.close()
file2.close()
print("地址簿合并完成!")
if __name__ == "__main__":
main()
实验心得
在本次实验中,在老师的指导下我进行了python的文件读取相关的实验,比如第一个实验中的csv学生信息录入,并通过后续的程序追加信息,最终运用json库进行数据的维度转换,在实际运用中,更多的是做文件的导入导处的操作。常用的方法也不多;如果项目是偏IO方面,或者说是日志分析的项目,也许io读取是比较频繁的。在第二个实验中,我调用了turtle库进行了图像的绘画,再次体会到了python的实际功能的强大之处,第三个实验中则学习到了如何有序的将两个不同文本文档合并成一个全新的文本文档,这对于大型的项目来说是一项不可缺少的强力工具。