近期在看 /usr/bin/yum的时候,偶然看到在文件开头看到了这个
#! /usr/bin/python
下面是Python的代码,这样就可以执行yum文件了。
没查资料,不过猜测 #! 后面跟随的执行文件应该是用来执行文件内代码的解释器。
所以可以在 youdao.py 文件开头加上
#! /usr/bin/python
这样就可以修改文件模式后,就可以直接执行了。不需要使用下面的那种有点繁琐的方法了
更新于 2014 8 26------------------------------------------------------------------------------------------------------------------------------------------------------------
linux下面使用终端,有的时候需要查找一个单词,都需要打开浏览器通过网页来查找单词,这样效率会会非常的繁琐,并且也会降低工作效率。
之前刚开始看python文档的时候,看过别人说的一个用python写的在终端下查单词的脚本,当时没记录下来,后来也没找到。
今天本来是想解决我网站的显示的问题,但是想到这个不做了就感觉哪里不对,一股强迫症的感觉。。
自己用python写了一个脚本,用的是有道翻译的api,感谢有道。
使用方法为,python youdao.py word ,单词 word为你要查询的单词。
下面贴代码:
import sys
from urllib.request import urlopen
from html.parser import HTMLParser
def get_result(word):
url = 'http://fanyi.youdao.com/openapi.do?keyfrom=majunzhe&key=27448872&type=data&doctype=xml&version=1.1&q='
query_url = url + word
result = urlopen(query_url).read().decode('utf-8')
return result
class WordResultParser(HTMLParser):
bHandled = False
bExplain = False
data_meaning = ''
output = ''
tags = ('phonetic', 'ex', 'key')
def parse_data(self, data):
beg_pos = data.rfind('[') + 1
end_pos = data.find(']', beg_pos, len(data))
if end_pos == -1:
end_pos = len(data)
#print(beg_pos)
#print(end_pos)
#print(data)
self.data_meaning = data[beg_pos:end_pos]
def handle_starttag(self, tag, attrs):
if 'basic' == tag:
self.output += '基本释义:\n'
elif 'web' == tag:
self.output += '网络释义:\n'
elif 'explain' == tag:
self.bExplain = True
if tag in self.tags:
self.bHandled = True
def handle_endtag(self, tag):
if 'explain' == tag:
self.output += '\n'
self.bExplain = False
def unknown_decl(self, data):
if self.bHandled != True:
return
self.parse_data(data)
endstr = '\n'
if self.bExplain:
endstr = ' '
self.output += self.data_meaning + endstr
self.bHandled = False
def print_results():
for word in sys.argv[1:]:
#print('-------------------------------------------------------------')
# get the query result
word_result = get_result(word)
#print(word_result)
word_parser = WordResultParser()
word_parser.feed(word_result)
print(word_parser.output[:-2])
#print('-------------------------------------------------------------')
print_results()
大致步骤是这样的:
1 首先明白有道翻译api的使用方法,具体步骤可以在官网上面查看,但是使用api之前要申请一个 key。
2 通过python的库来打开url,并通过解析 返回的数据得到查询结果,我使用的是 python 库 HTMLParser来解析数据的。
3 在linux下再进行简单的配置下,就可以直接在像使用其他的命令行来使用这个脚本了。
这个脚本我设置了一次能查询多个单词的功能。
下面是在linux下面的配置步骤:
1 首先把上面的python代码存成一个名为 youdao.py的文件,我把这个文件放置在 ~/Documents 文件夹下
2 再在 ~/ 文件夹下创建一个 脚本 , 文件命名为 youdao
#!/bin/bash
while [ $# -ne 0 ]
do
python Documents/youdao.py $1
shift
done
其中的while语句是用来一次查询多个单词使用的
3 给其赋予可执行权限
chmod u+x youdao
4 当完成了上述的步骤之后,就可以./youdao xxx, 这样的查询单词了。
但是我们这样用着肯定不方便的。那就将这个脚本链接到/usr/bin 下。
sudo ln -s ~/youdao /usr/bin/youdao
5 完成。
下面就可以尽情在命令行下面查询单词了,没有添加查询句子的功能,觉得没啥用,一般都是查一个单词的,一次查多个单词的功能还是为了以防万一。
哈哈
个人网站为:www.majunzhe.com