调用Python函数并从cmd.exe传递Windows参数

问题描述 投票:1回答:1

我有一个要从上下文菜单中运行的Python函数。右键单击文件时,我正在使用Windows注册表来调用该函数,并且希望该函数接收所选的文件。

上下文菜单项看起来像the Random Commands option

我希望运行的功能是文件Random Commands中的foo1()

test1

我尝试使用python # in script test1.py def foo1(): import sys print(sys.argv) 开关直接调用该函数来解决问题:

-c

但是,选择文件并执行后的python -c "import test1; test1.foo1()" %1 值为sys.argv,不包括所选文件。

我还尝试使用参数解析器动态导入和运行该函数:

['-c']

我从注册表中调用的函数是(简化的路径:

# in file registry_parser.py

import argparse
import os
import sys


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-n', '--func_name')
    parser.add_argument('-f', '--file_name')
    parser.add_argument('-p', '--file_path')

    args = vars(parser.parse_args())
    sys.path.insert(0, args['file_path'])

    exec(f"import {args['file_name']}")
    exec(f"{args['file_name']}.{args['func_name']}(sys.argv)")

但是,我得到一个错误registry_parser.py --func_name foo1 --file_name test1 --file_path "[PATH TO registry_parser.py]" %1 或“ registry_parser.py: error: unrecognized arguments: %1”被完全按字面分析,并最终在sys.argv中作为一个值。

感谢您的任何帮助。

python windows cmd registry contextmenu
1个回答
0
投票

所以在所有论坛上我都问我从来没有收到正确的答案,但是我发现这个%1有解决方案的例子。希望这对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.