簡體   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