[英]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.