Python 3.6 write语句格式化变量与字面量的正确写法及报错解决
问题根因
- 语法错误核心是双引号嵌套未正确转义、字符串拼接时引号配对错误,同时错误地把要写入的字符串内容拆成了
write()方法的多个参数,另外存在多余的右括号语法错误 - 手动拼接字符串需要处理大量转义符,极易出现配对错误,是此类问题的常见诱因
修正后代码
Python 3.6支持f-string格式化,可读性和准确率远高于手动字符串拼接,修正后代码如下:
# 可根据需求选择是否用os模块处理路径,也可保留你原来的路径写法 import os output_path = os.path.join(stellocation, "scripts", "sh4.ssc") with open(output_path, 'w', encoding='utf-8') as stella: # 写入第一行setDate配置 stella.write(f'core.setDate("{date}T{time}:00","UTC");\n') # 写入第二行观察者位置配置,可根据实际需求调整位置描述的拼接逻辑 location_desc = f"USS Perch ({ocean})" stella.write(f'core.setObserverLocation({longitude}, {latitude}, 6, 0, "{location_desc}", "Earth");\n')
关键修改说明
- 用单引号包裹整个要写入的字符串,字符串内部的双引号不需要额外转义,避免转义符配对错误
- 整个要写入的内容作为
write()方法的唯一字符串参数传入,没有多余的逗号拆分参数 - 末尾添加
\n换行符,保证两行输出和你的期望格式完全一致 - 用
with语句管理文件句柄,不需要手动调用close(),避免文件资源泄漏 - 如果位置描述的前缀不是固定的
USS Perch,直接修改location_desc变量的拼接逻辑即可
内容的提问来源于stack exchange,提问作者Calvin
相关产品推荐
相关产品推荐

