我有一个要从上下文菜单中运行的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中作为一个值。
感谢您的任何帮助。
所以在所有论坛上我都问我从来没有收到正确的答案,但是我发现这个%1
有解决方案的例子。希望这对其他人有帮助。