You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何argparse无法识别我的输入文件?

解决argparse参数引用错误导致的文件找不到问题

核心问题是你在调用LoadSDF和WriteSDF时,错误地将args.input和args.output包裹在了字符串引号中。Python会把r"args.input"识别为字面量字符串'args.input',而不是去读取argparse解析得到的实际文件路径,这就是为什么报错说找不到'args.input'这个文件。

修正后的完整代码

import argparse
from rdkit.Chem import PandasTools

parser = argparse.ArgumentParser(description='Convert SDF file')
parser.add_argument("-i", "--input", help="path to input sdf file", required=True)
parser.add_argument("-o", "--output", help="path to output sdf file", required=True)
args = parser.parse_args()

# 直接引用args.input和args.output变量,不要加引号
df = PandasTools.LoadSDF(args.input) 
PandasTools.WriteSDF(df, args.output, properties=list(df.columns))

关键修改说明

  • 移除字符串引号:把r"args.input"改为args.input,r"args.output"改为args.output,让Python正确引用argparse解析后的参数值
  • 添加必填参数约束:给add_argument加上required=True,确保用户必须传入输入和输出路径,避免因参数缺失引发其他异常
  • 简化导入语句:不需要单独导入rdkit和pandas,PandasTools已经包含了所需的依赖模块

运行命令保持不变:

python script.py --input file.sdf --output file2.sdf

内容的提问来源于stack exchange,提问作者DK_chemistry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:03:22