import sys
script, encoding, error = sys.argv # argv用于输入参数
def main(language_file, encoding, errors):
line = language_file.readline() # 从给它的语言文件中读取一行,用readline处理文本文件
# 以下if结构用来检查文件是否结束,运行到文件结尾会返回空字符串,则此处为真,if后面的代码可以执行
if line: # 防止一直循环下去
print_line(line, encoding, errors) # 调用print_line函数来打印这一行,使代码更加简单易懂
return main(language_file, encoding, errors) # 在main函数里面调用main函数,即跳到函数顶端再运行一次,类似一次循环
def print_line(line, encoding, errors): # print_line函数:对languages.txt的每一行编码
next_lang = line.strip() # 删掉每行结尾的\n
raw_bytes = next_lang.encode(encoding, errors=errors) # 调用encode()编码字符串
cooked_string = raw_bytes.decode(encoding, errors=errors) # cooked_string的值等于next_lang,使用decode()解码字节序列
print(raw_bytes, "<===>", cooked_string) # 打印
languages = open("languages.txt", encoding="utf-8") # 打开languages.txt文件
main(languages, encoding, error) # 执行main函数,循环开始
本段代码读取languages.txt 中的字符串后将其编码成字节序列,再解码成字符串打印,中间使用在main函数中调用main函数,实现循环,用if来终止循环。