分子写入脚本调用open()方法即终止问题求助
问题分析与解决
你的脚本移出项目目录后执行open()时终止,核心原因有两个:
- 转义字符解析错误:Python字符串里的
\是转义符,直接写"Molekuele\\"会被错误解析,导致路径识别异常。 - 相对路径依赖工作目录:脚本运行时的当前工作目录(非脚本所在目录)可能不包含
Molekuele文件夹,相对路径无法定位到目标目录。
具体修复方案
1. 修复路径转义问题
把路径中的\替换为以下任意一种写法:
- 用原始字符串:在路径前加
r,让Python不解析转义符,比如r"Molekuele\\" - 用正斜杠:Python跨平台支持正斜杠作为路径分隔符,比如
"Molekuele/" - 用双反斜杠:手动转义,比如
"Molekuele\\\\"
2. 绑定路径到脚本所在目录(推荐)
如果Molekuele文件夹和脚本在同一目录下,用os模块获取脚本的绝对路径,再拼接目标文件路径,这样不管脚本在哪运行都能找到目标文件夹。
修改后的代码如下:
import os first_line_form_display = [" "] for i in range(9): first_line_form_display += [" "] first_line_form_display += [str(i+1)+" "] form_display = [first_line_form_display] for i in range(9): form_display += [[]] for j in range(19): form_display[2*i+1] += [" "] form_display += [[str(i+1)+" "]] for j in range(18): form_display[2*i+2] += [" "] molecule_name = input("Enter the name of the molecule: ") # 获取脚本所在目录的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 自动拼接目标文件路径,适配不同系统的路径分隔符 file_path = os.path.join(script_dir, "Molekuele", f"{molecule_name}.txt") # 用with语句自动管理文件,无需手动close with open(file_path, "w") as create_molecule: create_molecule.write("") with open(file_path, "a") as save_molecule: for i in range(len(form_display)-1): save_molecule.write(" ") for j in range(len(form_display[i+1])-1): save_molecule.write(form_display[i+1][j+1]) save_molecule.write("\n")
额外优化说明
- 用
with语句操作文件,自动处理文件关闭,避免资源泄漏 - 用
os.path.join()拼接路径,自动适配Windows/Linux/macOS的路径规则,提升跨平台兼容性
内容的提问来源于stack exchange,提问作者Kamikatze255
相关产品推荐
相关产品推荐

