从 Linux 控制台运行函数(来自 .py 文件)
可能标题说的不是很清楚,我详细说一下。
我有一个 python 脚本,可以打开 ppm 文件,应用选定的过滤器(旋转...)并创建新图片。直到这里一切正常。
但我想通过 Linux 控制台执行相同的操作,例如:
ppmfilter.py ROTD /path/imageIn.ppm /path/imageOut.ppm
这里 ROTD 是应用旋转的函数的名称。
我不知道该怎么做,我正在寻找一个可以让我做到这一点的图书馆。
期待您的帮助。
PS:我使用的是python 2.7
maybe the title is not very clear, let me elaborate.
I have a python script that open a ppm file , apply a chosen filter(rotations...) and create a new picture. until here everything work fine.
but I want to do the same thing through a linux console like:
ppmfilter.py ROTD /path/imageIn.ppm /path/imageOut.ppm
here ROTD is the name of the function that apply a rotation.
I don't know how to do this, I'm looking for a library that'll allow me to do this.
looking forward for your help.
P.S.: I'm using python 2.7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
有一个相对简单的方法:
您可以使用“globals()”确定全局名称(函数、变量等)。这为您提供了所有全局符号的字典。您只需要检查类型(使用 type() 和模块类型),如果它是一个函数,您可以使用 sys.argv 调用它:
这会将程序参数(不包括文件名和命令名)传递给的功能。
编辑:请不要忘记错误处理。为了清楚起见,我省略了它。
There is a relatively easy way:
You can determine the global names (functions, variables, etc.) with the use of 'globals()'. This gives you a dictionary of all global symbols. You'll just need to check the type (with type() and the module types) and if it's a function, you can call it with sys.argv:
This will pass the program argument (excluding the filename and the command name) to the function.
EDIT: Please, don't forget the error handling. I omited it for reasons of clarity.
使用 main() 函数:
Use main() function:
一个很好的方法是在模块内定义一个大字典
{alias: function}
。例如:你明白了。然后获取第一个命令行参数并将其解释为该字典的键,并将
actions[k]
应用于其余参数。A nice way to do it would be to define a big dictionary
{alias: function}
inside your module. For instance:You get the idea. Then take the first command-line argument and interpret it as a key of this dictionary, applying
actions[k]
to the rest of the arguments.您可以在
ppmfilter.py
main
部分中执行以下操作:并调用它:
python ppmfilter.py file1 file2
您还可以运行
python -c
在包含 *.py 文件的目录中:You can define in your
ppmfilter.py
main
section doing this:and call it:
python ppmfilter.py file1 file2
You can also run
python -c
in the directory that contains you *.py file: