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