为何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
相关产品推荐
相关产品推荐

