【python】实验1项目3 文件的读写,编码和解码

文件的读写,编码和解码
小练习1:# 1.分别使用gbk和utf-8编码自己的名字,并将其打印出来。 # 2.复制上一步得到的结果,进行解码,打印出你的名字(两次)。3.使用gbk解码:b’\xb4\xf3\xca\xfd\xbe\xdd2018\xbc\xb6\xbf\xba\xb0\xef\xd7\xd3’

小练习2:通过文件读写命令,读取 photo1 里的数据。如下图,可以点击右键另存为photo1。然后,新建名为“photo2”的图片(在同一个文件夹),写入读到的数据,完成了图片的复制。

小练习3:完成文件转移之间的数据处理,让数据发生变化
有一个文件名字叫:‘吃鸡排行.txt’打开之后看到如下:
大数据第一战队_落地成盒 23 35 44 90 70
大数据第二战队_跑毒 60 77 68 88 90
大数据第三战队_神打野 97 99 89 91 99
大数据第四战队_ 鱼塘局 85 90 98 89
先把以上四行存为单独一个txt文件;1. 通过读取txt文件,打印出来每个战队的名字和总分,例如
大数据第一战队_落地成盒262
大数据第二战队_跑毒383
……
……
2把上面4行内容,存为列表并且写入一个名叫winner.txt文件中
3让战队的成绩从高到低排列,然后放到新文档“winner_new.txt”。
提示:对于3,可能要用到re包,字典、sorted()\zip()\map()\re.findall()\re.compile()

解题思路:3.1使用gbk和utf-8编码,以及解码
3.2打开图片,新建文件存图片
3.3.1&3.3.2打开‘吃鸡排行.txt’,读取文件,存为列表并且写入文件,进行排列,再存到新文件
1.3.1

# 1.分别使用gbk和utf-8编码自己的名字,并将其打印出来。
print('茹'.encode('utf-8'))
print('茹'.encode('gbk'))
# 2.复制上一步得到的结果,进行解码,打印出你的名字(两次)。
print(b'\xe5\xbc\xa0\xe4\xba\x9a\xe8\x8c\xb9'.decode('utf-8'))
print(b'\xd5\xc5\xd1\xc7\xc8\xe3'.decode('gbk'))
# 3.使用gbk解码。
print(b'\xb4\xf3\xca\xfd\xbe\xdd2018\xbc\xb6\xbf\xba\xb0\xef\xd7\xd3'.decode('gbk'))
print("Tans.plt")

1.3.2

with open('photo1.png','rb') as file:  # 以“rb”模式打开图片
    data = file.read()
    with open('photo2.png','wb') as newfile:  # 以“wb”模式写入
        newfile.write(data)
print("plt")

1.3.3.1

file1 = open('吃鸡排行.txt','r',encoding='utf-8')
file_lines = file1.readlines()
file1.close()

final_scores = []

for i in file_lines:
    data =i.split()
    sum = 0
    for score in data[1:]:
        sum += int(score)  # 然后依次加起来,但分数是字符串,所以要转换
    result = data[0]+str(sum)+'\n'  # 结果就是学生姓名和总分
    print(result)
    final_scores.append(result)


sum1 = open('winner.txt','w',encoding='utf-8')
sum1.writelines(final_scores)
sum1.close()
print("plt")

1.3.3.2

file1 = open('winner.txt','r',encoding='utf-8')
file_lines = file1.readlines()
file1.close()

dict_scores = {}
list_scores = []
final_scores = []

for i in file_lines:
    name = i[:-4]  #取名字
    score = int(i[-4:-1])  # 取分数
    dict_scores[score] = name
    list_scores.append(score)
list_scores.sort(reverse=True)
for i in list_scores:
    result = dict_scores[i] + str(i) + '\n'
    final_scores.append(result)
    print(result)
print(final_scores)

winner_new = open('winner_new.txt','w',encoding='utf-8')
winner_new.writelines(final_scores)
winner_new.close()
print("Tans.plt")

上一篇:2019.12.3


下一篇:c++学习心得(六) 数组(5)二维数组应用案例输出成绩