开发者学堂课程【Python 入门 2020年版:作业讲解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10423
作业讲解
内容介绍:
一、文件操作作业参考答案
二、作业
一、文件操作作业参考答案
1.用代码实现将制定路径下的音频文件剪切到其他路径下
思路:
(1)剪切---可以理解为拷贝一份到指定路径,然后把源文件删除
(2)拷贝---操作的是文件的数据
先从源文件中读取数据---由于是音频文件,需要以字节形式进行操作,再将读到的数据写入到目的文件中
(3)执行完上述操作之后删除文件
import os #获取文件信息的模块
#获取源文件路径---使用相对路径表示与当前文件同一个目录
src_ path = r" 野狼 disco. mp3"
#目的路径---使用相对路径表示
desc_ path = r".. /野狼 disco. mp3"
#因为文件的读写是与程序外部资源联系,产生垃圾程序无法处理,所以需要手动关闭然而在关闭之前不管是否出现异常都要关闭,所以做如下处理
read_ handle = None
#用于接收与文件之间建立的联系
write_ handle = None
try:
#源文件是读取
read_ handle = open(src_ path,"rb")
#向目的文件中是写
write_ handle = open(desc_ path, "wb" )
#大型文件循环读取一直到读到文件大小为止
#获取文件大小
file_ size = os.path .getsize(sre_ path)
#设置记录读取数据的长度
has_ read = 0
#循环读取
while has_ read < file_ size :
data = read_handle. read(1024)
#将读到的数据写入到文件中
write_ handle.write( data)
write_ handle.flush() #刷新
#将读取的数据累计一下
has_ read += 1024
except Exception as e:
print(e)
finally:
#当建立的联系不为空表示联系已经建立在联系建立的基础上才可以关闭联系
if write_ handle is not None :
write_ handle.close( )
if read_handle is not None :
read_ handle. close( )
#删除文件
Os . remove(src_ path )
2.读取 youbian.txt文件中的数据, 完成邮编查询的操作
输入邮编号,如果有此邮编,输出对应的城市
否则提示无此邮编
读取 youbian. txt文件中的数据,完成邮编查询的操作
· 输入邮编号,如果有此邮编,输出对应的城市
· 否则提示无此邮编
思路:
youbian. txt文件中的数据是一行一行的,所以我们可以读取所有行,把数据读取出来,读出来的数据是字符串格式的,字符串内部包含的是列表,所以可以使用 eval解析字符串,提取内部的列表数据
file_ handle = None
try:
file_ handle = opn(r"youbian.txt", “r", encoding= "utf-8")
data_ list = file_ handle. readlines() #读取所有行
print(data_ list)
'\ufeff [100000,“北京市"], \n','[110100, “北京市市辖区"], \n '
列表中的数据有些同学可能跟我这边出现一样的情况。就是第一条左边多出一个隐藏字符
处理情况:可以将这一条单独设置即可
其他的数据:要是想提取出来列表的话,需要去除掉字符串右端的,\n 符号
new_ list = [[100000, "北京市"]] #用于存放提取出来的列表数据
#遍历原列表
for i in range(1, len(data_ list)):
#因为索引0位置数据已定,所以从1开始
#先去除数据两端非列表的数据
data =data _list[i] .rstrip(",\n")
new_ _data = list(eval(data))
new_ 1ist. append(new_ data)
print(new_list)
#或者可以使用列表生成式
# new_list = [list(eval(data_list[i].rstrip(",\n"))) for i in range(1,len (data_hist) )]
#print(new_ list)
code = int(input("请输入邮编号: "))
for code_ list in new_ list:
if code_ list[0] == code:
print(code_ list[1])
break #结束查找
else:
print("无此邮编")
except Exception as e:
print(e)
finally:
if file_ handle is not None :
file_ handle.close()
3.将一个英文语句以单词为单位逆序排放到指定的文件中
例如: "I am a boy"逆序排放后"boy a am I”将其写入到指定的文件中。
将一个英文语句以单词为单位逆序排放到指定的文件中
思路:
(1)单词之间是以空格为分割的所以按照空格分割获取所有的单词
(2)分割之后是将数据存放于列表中的将列表中的数据反转
(3)将反转的列表使用空格拼接在一起然后写入到文件中
file_ handle = None
try:
sentence = input("请输入一段英文语句: ")
#对其进行切割
word_ list = sentence. split()
#不传参默认以空字符序列为分割
print(w
ord_ list)
#对列表进行反转
word_ list. reverse( )
#将其拼接成新的语句
new_ sentence =“”.join(word_ list)
#打开文件向里面写内容
file_ handle = open( "word.txt", "w" ,encoding-="utf-8 ")
file_ handle . write ( new_ sentence )
file_ handle. flush() #刷新
二、作业
import json
try:
with open( 'youbian.txt', 'r', encoding= 'utf8') as file:
content = file . readline( )
print(content,type( content ))//[100000:"北京市"],\n
x = json.loads(content)
print(x)
except FileNotFoundError :
print('文件打开失败')
import json
code_ list = [
]
try:
with open('youbian.txt', 'r', encoding='utf8') as file:
while True: