编写Python3.9脚本解析文本文件 按行首标识符执行对应操作
问题原因
你调用readlines()后返回的lines是由文件每一行文本组成的字符串列表,遍历得到的line本身就是字符串类型,不存在read方法,这就是你触发类型报错的根因,直接使用line变量即可读取行内容。
完整实现代码
# 读取用户输入的脚本文件路径 script_path = input("Enter the script filename: ") # 临时存储当前待转换文本和对应输出文件名 current_text = "" current_filename = "" # 用with上下文管理器自动处理文件关闭,避免资源泄漏 with open(script_path, 'r', encoding='utf-8') as f: for line in f: # 去除行首尾的空白字符(换行符、空格、制表符等) stripped_line = line.strip() # 跳过空行 if not stripped_line: continue # 按行标识符分类处理 if stripped_line.startswith('#') or stripped_line.startswith('A:'): # 注释行、操作提示行直接跳过 continue elif stripped_line.startswith('T:'): # 提取待转语音的文本内容,移除开头的T:标识 current_text = stripped_line[2:].strip() elif stripped_line.startswith('F:'): # 提取输出文件名,移除开头的F:标识 current_filename = stripped_line[2:].strip() # 文本和文件名都已获取,可调用Amazon Polly生成音频 if current_text: print(f"待生成音频:文本={current_text},输出文件={current_filename}") # 此处替换为你调用Amazon Polly的实际业务代码 # 生成完成后重置临时变量,处理下一组内容 current_text = "" current_filename = ""
关键说明
- 无需手动调用
close()关闭文件,with语法会在代码块执行结束后自动释放文件资源,更安全可靠 - 调用
strip()处理每一行是为了避免行首尾的换行符、多余空格干扰标识符判断 - 上述逻辑默认
T:行一定在对应F:行之前,和你给出的示例格式保持一致,如果你的脚本存在其他顺序可自行调整临时变量的处理逻辑
内容的提问来源于stack exchange,提问作者Lanette Manzi
相关产品推荐
相关产品推荐

