昨天看到一篇关于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. 学习HTML的第三次课

    浏览器的地址栏中有字数限制,大约为200个字符. 1.表单:<form action="" method=""></form> 属性: ...

  2. ios、移动端 input type=date无法点击的问题解决方法

    正常用input type = "text",获取焦点的时候,将type 改成 date即可. <div class="form-item"> &l ...

  3. python AES加密解密 pycryptodome

    环境 pyhton3.6 博主为了解码 AES 用了1天的时间,安了各种包,然而走了很多坑,在这里给大家提供一个简便的方法 首先在命令行(推荐)  pip install Crypto 你会发现安装下 ...

  4. Anaconda入门安装教程

    Anaconda 是什么? Anaconda 是一个可用于科学计算的 Python 发行版,支持 Linux.Mac.Windows系统,内置了常用的科学计算包.它解决了官方 Python 的两大痛点 ...

  5. NOIP2014-10-30模拟赛

    T1:逗比三角形 [题目描述] 小J是一名OI退役滚粗文化课选手,他十分喜欢做题,尤其是裸题.他现在有一个二维盒子和一些二维三角形,这个盒子拥有无限的高度和L的宽度.而且他的三角形也都是一些锐角三角形 ...

  6. 【bzoj4571 scoi2016】美味

    题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi .因此,第 ...

  7. [SDOI2009]Bill的挑战

    题目描述 题解: 因为要求的T长度一定,可定义f[i][j] 为前i位状态为j的方案,can[i][j]表示第i为字母j,可行的状态 每次往后推就行了 #include <algorithm&g ...

  8. UVA 1451 Average

    A DNA sequence consists of four letters, A, C, G, and T. The GC-ratio of a DNA sequence is the numbe ...

  9. bzoj3831 [Poi2014]Little Bird 单调队列优化dp

    3831: [Poi2014]Little Bird Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 505  Solved: 322[Submit][ ...

  10. bzoj2127

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 2492  Solved: 1205[Submit][Status][D ...