簡體   English   中英

在PowerShell中編寫Python腳本:如何使用argv?

[英]Writing Python script in PowerShell: how to use argv?

我是Python的初學者。 我已經嘗試了很長時間來尋找這個問題的答案,但是對此並不走運。 無論如何,這是我要運行的代碼(我將其保存為test.py):

    from sys import argv
    script, firstArgument = argv
    print "Hello %s!" %firstArgument

如果我在PowerShell中鍵入以下內容,則它可以正常工作:

    >> cd ~
    >> Python test.py "StackOverflow"

但是,如果我嘗試像這樣在PowerShell中鍵入代碼:

    >> cd ~
    >> Python
    >> from sys import argv
    >> script, firstArgument = argv

那時我遇到了一個巨大的錯誤...我只是想知道,是否有一種方法可以直接在PowerShell中聲明argv還是不可能? -謝謝

當您單獨調用python使其進入交互模式時,沒有傳遞任何參數。因此, argv為空。

我在Ubuntu運行,但是在Windows是相同的一般概念:

:~  $ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sys import argv
>>> print argv
>>> ['']

PowershellPython是兩個獨立的事物,每個事物都有傳遞給它們的自變量概念。 正如bash腳本具有傳遞參數的概念一樣, Powershell也具有傳遞參數的概念,盡管它們的處理方式不同。 但是,兩者都沒有直接連接到Python的argv

通常,可以使用environment variable s在Python和外殼程序之間來回傳遞消息(即,您可以在Python內部設置可以在外殼程序中讀取的environment variable s,反之亦然,但是無論哪種情況,它們都是與argv不同,后者具體是傳遞給python可執行文件的參數)。 或者可以使用shell中的環境變量來確定應將哪些參數傳遞給python ,從而確定argv將是什么。

有關更多詳細信息,請參見此鏈接: https : //docs.python.org/2/library/sys.html#sys.argv

根據OP的評論進行編輯:

本身不能聲明argv 它代表解釋器的調用方式,在交互模式下,根據定義,它沒有參數。

對於您的特定示例,它與在Python中打開tuple s的方式以及argv的當前狀態有關,該狀態為空字符串。

:~  $ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sys import argv
>>> firstArgument=argv 
>>> print firstArgument
['']
>>> firstArgument, secondArgument=argv 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack

由於argv僅包含一個元素,因此無法將其分配給兩個變量。

例如,您可以這樣做:

>>> firstArgument, secondArgument=argv,1 
>>> print secondArgument
1

現在實際上有兩個值-元組('',1) ,因此可以將其解壓縮為兩個不同的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM