我一直在嘗試學習如何正確使用sys.argv,同時從命令行調用可執行文件。Python sys.argv打印函數結果的類型錯誤?
我想要在命令行傳遞文件名和參數時將函數結果打印到命令行,但是我得到一個TypeError。
到目前爲止,我有:
#! /usr/bin/env python
import mechanize
from BeautifulSoup import BeautifulSoup
import sys
def dictionary(word):
br = mechanize.Browser()
response = br.open('http://www.dictionary.reference.com')
br.select_form(nr=0)
br.form['q'] = sys.argv
br.submit()
definition = BeautifulSoup(br.response().read())
trans = definition.findAll('td',{'class':'td3n2'})
fin = [i.text for i in trans]
query = {}
for i in fin:
query[fin.index(i)] = i
return query
print dictionary(sys.argv)
當我把這叫做:
./this_file.py 'pass'
我離開我與此錯誤消息:
Traceback (most recent call last):
File "./hot.py", line 20, in <module>
print dictionary(sys.argv)
File "./hot.py", line 10, in dictionary
br.form['q'] = sys.argv
File "/usr/local/lib/python2.7/dist-packages/mechanize/_form.py", line 2782, in __setitem__
control.value = value
File "/usr/local/lib/python2.7/dist-packages/mechanize/_form.py", line 1217, in __setattr__
raise TypeError("must assign a string")
TypeError: must assign a string
捷爾感謝您耐心等待,並回答我的問題。我應該強調一點,我沒有使用sys.argv。我以爲kwargs使用的列表和元組不是argv。 – tijko 2012-08-12 21:51:48
@tijko沒問題。 *沒有人*出生在這裏知道Python(或其他任何東西:)從你以前的問題和錯誤消息,我懷疑這條線是問題。我希望這能解決你的問題。 – Levon 2012-08-12 21:53:02
對,並非常感謝。它解決了這個問題,我明白爲什麼! :D – tijko 2012-08-12 21:54:00