実行可能にしたファイルがあります。結果をコマンドラインに返したい機能がありますが、NameErrorメッセージが表示され続けます。物事を分解するために、私は LinuxMint Lisa を使用しています。
#! /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'] = word
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)
次に、端末から chmod します。
sudo chmod +x this_file.py
コマンドラインからこのファイルを呼び出すときは、次のように入力します。
./this_file.py 'pass'(or any other string argument)
どちらが返されますか:
TypeError: Must assign a string
したがって、明らかにsys.argvを正しく使用していないことはわかっていますが、この関数の結果をコマンドラインに返そうとすると、何か他のものをいじっているように感じます。