繁体   English   中英

从另一个py调用py脚本会输出值

[英]Calling py script from another py prints the value

嗨,我是第一次编写python:

我有一个现有的getprop.py脚本,该脚本加载属性文件并打印给定属性的值:

import sys
import util

if len(sys.argv) < 3:
    print "Error! Usage is: getprop.py [propfile] [propname]"
    sys.exit(1)

props = util.loadprops(sys.argv[1])
if sys.argv[2] in props:
    print props(sys.argv[2]);

现在,我需要在另一个py脚本中获取属性的值,因此我修改了上面的脚本,以免影响其功能,并且可以在另一个脚本中使用它:

import sys
import util

def getpropvalue(propfile, propname):
    props = util.loadprops(propfile)
    if propname in props:
    return props[propname]

if len(sys.argv) < 3:
    print "Error! Usage is: getprop.py [propfile] [propname]"
    sys.exit(1)

else:
    print getpropvalue(sys.argv[1], sys.argv[2]);

然后在其他脚本中,我导入getprop并调用诸如getprop.getpropvalue(FILE_NAME,PROP_NAME)之类的方法,它将在屏幕上打印属性的值。

为什么打印出值? 有没有更好的方法来解决这个问题?

只有直接调用脚本,才可以运行该脚本。 将这些行添加到您的getprop代码的末尾:

if __name__ == "__main__":
    main()

这样,只有直接运行脚本(而不是导入)时,才会调用main函数。 那是您要找的东西吗?
一些解释:每个正在运行的脚本都有一个__name__变量,如果您是从IDE或控制台(如python script.py运行脚本,则该变量将设置为"__main__"

将您的getprop.py更改为此:

import sys
import util

def getpropvalue(propfile, propname):
    props = util.loadprops(propfile)
    if propname in props:
    return props[propname]

if __name__ == '__main__':
    if len(sys.argv) < 3:
        print "Error! Usage is: getprop.py [propfile] [propname]"
        sys.exit(1)

    else:
        print getpropvalue(sys.argv[1], sys.argv[2]);

这将防止代码在导入时被执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM