昨天看到一篇关于Linux下的桌面词典的文章,于是就想实现一个Windows命令行下的翻译软件。下面,我将一步步的来实现这个简单的小软件。


准备

按照瀑布开发模型,需要进行一些列的流程,在这里由于是博主自己使用,所以就省略了需求分析,系统设计,编码设计这些阶段,直奔主题了。

素材

博主本次试验的环境大致如下:

  • 操作系统: Windows 7 64位
  • 编程语言:Python (版本2.7.11)
  • IDE: PyCharm 专业版

依赖

如上,根据实验环境,所需的依赖就不难理解了。不过除了接口,也没有用到什么第三方的库。所以依赖也是很简单的了。就是百度翻译的公共API接口。待会再介绍。

接口

至于什么是接口。与其说是一种规范,我个人觉得对咱们开发者而言,了解怎么使用就可以了,所以把它当做是一个函数就可以了。我们传给这个接口一些参数,然后处理返回的结果。这就可以了!够白话了吧:-)

地址

本次试验,依赖的接口是国内互联网公司三巨头之一的百度的一个公共的翻译接口。如下:

http://fanyi.baidu.com/v2transapi

待会通过get的方式或者post的方式进行与服务器的交互,就能完成今天的实验了。

参数

#
# 执行文本翻译
# query 要翻译的文本
# from 原语言语种 默认:中文
# to 目标语种 默认:英文

如上,了解了这三个参数就足够了。

返回值解析

我这里模拟请求了一下服务器,获得了其返回的一串JSON数据。大致的串如下:

编码及测试

现在万事俱备,只欠一个能编码的程序员了。:-)

Python处理JSON串简直是酸爽,特别的快速!

功能代码

# coding:utf-8
import sys

reload(sys)
sys.setdefaultencoding('utf8')
#    __author__ = '郭 璞'
#    __date__ = '2016/9/29'
#    __Desc__ = 实现命令行下的翻译程序实现

from urllib2 import *
import json
import sys

def getHtml(type=True, text='English'):
    if type:
        translate_url = "http://fanyi.baidu.com/v2transapi?query=%s"%text
    else:
        translate_url = "http://fanyi.baidu.com/v2transapi?from=zh&to=en&query=%s" % text
    data = urlopen(translate_url).read()
    return data

def main():
    # 这里使用encode为gbk的方式是为了在Windows的DOS界面下不发生乱码的情况
    flag = raw_input("英文转汉语输入1,汉语转英文输入0:".encode('gbk')).encode('utf8')
    # 应该考虑到windows 的DOS界面下输入的字符编码为gbk,要想被代码正确的用utf-8解码,首先先用gbk解码,还原为愿字符
    querytext = raw_input("请输入您想查询的内容\n".encode('gbk')).decode('gbk')
    if flag == 1:
        data = getHtml(type=False, text=querytext)
    else:
        data = getHtml(text=querytext)
    data = json.loads(data)
    # 分析json数据串,定向的获取到相应的解释信息
    # 首先打印出单词的简单含义
    print "\n翻译结果:".encode("gbk")
    print data['trans_result']['data'][0]['dst']

if __name__ == '__main__':
   main()

运行脚本

为了能直接的在命令行下使用,就得在环境变量里面进行一下设置了。不然,每次都得到这个文件路径下,那样岂不是很麻烦,这很明显不符合Pythonic的风格嘛。

于是写了一个脚本:

@echo off
python D:/mycommand/translate.py

是不是超简单呢?

环境变量

接下来就是把这个批命令bat文件的路径添加到环境变量中了。为了引起不必要的麻烦,我添加到了当前用户的环境变量中,这样就算是以后要更改,也不会影响到系统的环境变量了。

具体的方法,网上有很多参考资料,这里不过多的进行阐述了。

结果展示

最激动人心的时刻,到了。下面你将看到命令行下的精彩的世界。完善了上面步骤,就拥有了一个命令行下的翻译软件咯。:-)

英语转汉语

汉语转英语

总结

最后,来总结一下本次试验。

代码难度一般般,也可以说很简单了。就是些基础的Python内置模块的使用,额外需要掌握的就是接口,以及接口的使用等知识了。

另外,本实验可拓展性很强,因为这个接口内部又可以判断源语言的类属的功能,也就是说我们可以完成更加智能的翻译实现。不管什么语言,都可以被翻译,如果要指定目标语言的话,加个参数就即可。

DOS界面下的翻译软件制作的更多相关文章

  1. 在DOS界面下快速进入目录的技巧

    在DOS界面如果想进入某一目录还是比较困难的,尤其是有长目录名和中文目录名的时候. 比如:要进入“D:/工具箱/杀毒软件”这个目录. 1.在Windows下进入这个目录. 2.在地址栏输入 C:/WI ...

  2. dos界面下执行java文件将错误输出到一个文本小技巧

    如果dos下执行java出现错误,把错误记录到一个文档 正确时如图,输出结果为hello,我把String的s改为小写,出现错误,用2>命令输出到error.txt在当前目录就出现了error. ...

  3. win7系统下dos界面无法自由调整大小

    刚开始在win7系统,在dos界面下做MySQL的实验,很多数据不能显示界面上,只能显示固定的大小,以为这是系统的原因,后来在网上查找了一些资料.终于发现可以自由调节dos界面大小的方法.下面给出截图 ...

  4. Java在DOS命令下的运行及其API文档制作过程

    该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...

  5. 在DOS行下设置静态IP

    A.设置静态IP  CMD  netsh  netsh>int  interface>ip  interface ip>set add "本地链接" static ...

  6. 菜鸟之linux问题之图形界面和dos界面的登录问题

    1.安装完linux系统后,图形化界面的用户名和密码是之前安装的时候设置的. 如果想切换到linux的dos窗口快捷键是:ctrl+alt+F2 由dos窗口切换到linux图形界面快捷键是:ctrl ...

  7. Oracle在dos命令下导出导入

    DOS下运行的命令,也可以加参数在SQL/PLUS环境下运行简单例子实现 单表备份(前提库的结构是一样的)导出:开始钮->运行->输入CMD->进入DOS界面EXP 用户名/密码@连 ...

  8. 如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序

    首先说明一下背景: 为什么要在DOS界面编译C/C++源程序?有很多现成的开发环境(IDE)如:vs, vc++等,这些开发环境集成了编译,调试,使用起来很方便,而且图形化操作界面,简洁明了.但是在开 ...

  9. Java在dos界面运行java源文件编译成功,但运行虚拟机时出现错误:“找不到或无法加载主类”的问题

    (一)首先检查环境变量配置有没有问题, 1PATH为%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 2CLASSSPATH为.;%JAVA_HOME%\lib\dt.jar; ...

随机推荐

  1. for-each的坑(Hollis)

    直接用代码来说明: public class ForEach { public static void main(String[] args) { List<String> list = ...

  2. HTTP响应状态解析

    100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在请求完成后向客 ...

  3. 机器学习技法:02 Dual Support Vector Machine

    Roadmap Motivation of Dual SVM Lagrange Dual SVM Solving Dual SVM Messages behind Dual SVM Summary

  4. pdf如何转换为word文档

    我们经常会遇到需要将PDF转换为WORD文档,对于我来讲,有些PDF没有目录,看起来非常不方便,于是就特别想转成WORD,然后增加目录,想看某一节内容时,快速查找. 这里我总结了一些方法,后续也会不断 ...

  5. 【NOIP2009】Hankson 的趣味题

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲解 ...

  6. [SDOI2009]虔诚的墓主人

    题目描述 小W是一片新造公墓的管理人.公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地. 当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地. ...

  7. [HNOI2007]分裂游戏

    Description 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子 ...

  8. noip2017"退役"记

    day0 口胡了一下去年的六道题,感觉很稳,看了6集动漫,0点钟就去睡了. day1 早上被一阵革命练习曲吵醒,而我还是窝在被子里不想起床(-﹃-)~zZ.于是室友开始放起了lost river... ...

  9. ●BZOJ 1233 [Usaco2009Open] 干草堆 tower

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1233 留坑.以后再来看看. (绝望,无奈,丧心...) (这个题的证明真的很诡异啊,看得我稀 ...

  10. ●BZOJ 3931 [CQOI2015]网络吞吐量

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3931 题解: 在最短路图上跑网络流,要开long long(无奈 BZOJ AC 不了,洛谷 ...