[英]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
>>> ['']
Powershell
和Python
是兩個獨立的事物,每個事物都有傳遞給它們的自變量概念。 正如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.