学习目标:
ex23.py
utf-8
学习内容:
import sys
script, encoding, error = sys.argv
#解包
def main(language_file,encoding,errors):
line = language_file.readline()
#定义main函数 函数第一件事读取一行
if line:
print_line(line,encoding,errors)
return main(language_file,encoding,errors)
#if如果读取行获得内容,则为真,9和10行会执行,否则跳过
#调用了另一个函数来实际打印这一行;第10行调用函数自己只不过是……跳到函数顶端再运行一次而已
def print_line(line,encoding,errors): #定义 print_line 函数,它实际上是对 languages.txt 中每一行进行编码
next_lang = line.strip() #把每行结尾的\n 删掉而已
raw_bytes = next_lang.encode(encoding,errors = errors)
#我终于取到了 languages.txt 中的语言, 把它编码成原始字节。
#next_lang 变量是一个字符串,要获取原始字节串,我必须调用.encode()来编码字符串
#编码方式和处理错误的方式传入encode()函数
cooked_string = raw_bytes.decode(encoding,errors = errors)
#raw_bytes 就是字节串,所以我在上面调用了.decode(),从而得到一个 Python 字符串
print(raw_bytes, "<===>", cooked_string)
#二者打印出来
languages = open("languages.txt",encoding = "utf-8")
#函数定义完成,现在打开languages.txt文件
main(languages,encoding,error)
#脚本的结尾,执行了 main 函数,带了需要的所有参数,然后循环开始
#代码会跳到第 5 行 main 函数定义的顶端,然后到第 10 行,main 函数会再被调用一次,然后持续循环
# 8 行的 if 会阻止循环不停运行下去
学习时间:
2023.4.12
学习产出:
ex23.py