从另一个模块调用包含命令行参数的模块

时间:2019-05-07 07:06:02

标签: python python-3.x python-2.7

考虑以下python文件,有什么方法可以在导入时将layout_height=0dp传递给其他模块吗? (不希望拨打layout_width=0dp

cl arguments

3 个答案:

答案 0 :(得分:2)

正确的方法当然是将A.py更改为具有import QtQuick 2.7 import QtQuick.Controls 2.4 Action { /* Custom property */ property var keySequence shortcut: keySequence } 函数,如其他答案中所建议的那样,将参数作为参数。

所以您确实应该使用:

A.py:

import QtQuick 2.7
import QtQuick.Controls 2.4

Button {

    /* Disabled Shortcut */
    Shortcut {
        id: dummyShortcut
        enabled: false
        sequence: action.keySequence
    }

    hoverEnabled: true

    ToolTip.visible: hovered
    ToolTip.delay: 1000
    ToolTip.timeout: 5000
    ToolTip.text: dummyShortcut.nativeText
}

B.py:

import QtQuick 2.7
import QtQuick.Controls 2.4

ApplicationWindow {
    visible: true

    CustomAction {
        id: myAction
        keySequence: StandardKey.Open
    }

    ToolTipButton {
        id: myButton
        action: myAction
        text: "Trigger my action"
    }

}

话虽这么说,main是可变的,所以可以在调用# A.py def main(args): # -- resolve command line arguments parser = argparse.ArgumentParser() parser.add_argument('--name', type=str, required=True) parser.add_argument('--out_file', type=str, required=True) args = parser.parse_args(args) # -- do some operations # -- save results in `out_file` if __name__ == "__main__": main(sys.argv) 之前对其进行更改。

所以这是有可能的(即使有些 hacky ):

A.py:

import A
import sys

A.main([sys.argv[0], '--name', 'NAME_X', '--out_file', 'FILE.YY'])

B.py:

sys.argv

答案 1 :(得分:1)

# A.py
def main():
    # -- resolve command line arguments
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', type=str, required=True)
    parser.add_argument('--out_file', type=str, required=True)
    args = parser.parse_args()

    # -- do some operations
    # -- save results in `out_file`
    return out_file

if __name__ == "__main__":
   main()

#B.py
import A
def main():
    out_file = A.main()
# how to pass `name` and `out_file` in main?

答案 2 :(得分:1)

a.py中,您需要将main内容移至某个函数,例如def main()。我还向arguments=None添加了一个main()参数,该参数从b.py接收参数。

# a.py
import argparse

def main(arguments=None):
    # -- resolve command line arguments
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', type=str, required=True)
    parser.add_argument('--out_file', type=str, required=True)
    args = parser.parse_args(arguments)

    # -- do some operations
    # -- save results in `out_file`

if __name__ == "__main__":
    main()

然后您可以像这样在b.py中将参数传递给该函数

#b.py
from a import main

main(['--name', 'some_name', '--out_file', 'file.txt'])