Python的ctypes 和pyinstaller
这几天在学习python的爬虫, 无意中看到一篇博文 Python爬虫之自制英汉字典 发现里面的ctypes 和pyinstaller 还不了解,这边文章说白了就是你输入英文, python读取你的输入 然后发送一个http请求到有道翻译,然后把翻译的结果打印出来,这里使用了ctypes来设置打印窗口的颜色,使用pyinstaller来打包python程序, 网上关于pyinstaller和ctypes介绍已经很多了
python ctypes 探究 ---- python 与 c 的交互
代码如下:
import requests
from bs4 import BeautifulSoup
import random
import ctypes STD_INPUT_HANDLE = -
STD_OUTPUT_HANDLE = -
STD_ERROR_HANDLE = - FOREGROUND_DARKBLUE = 0x01 # 暗蓝色
FOREGROUND_DARKGREEN = 0x02 # 暗绿色
FOREGROUND_DARKSKYBLUE = 0x03 # 暗天蓝色
FOREGROUND_DARKRED = 0x04 # 暗红色
FOREGROUND_DARKPINK = 0x05 # 暗粉红色
FOREGROUND_DARKYELLOW = 0x06 # 暗黄色
FOREGROUND_DARKWHITE = 0x07 # 暗白色
FOREGROUND_DARKGRAY = 0x08 # 暗灰色
FOREGROUND_BLUE = 0x09 # 蓝色
FOREGROUND_GREEN = 0x0a # 绿色
FOREGROUND_SKYBLUE = 0x0b # 天蓝色
FOREGROUND_RED = 0x0c # 红色
FOREGROUND_PINK = 0x0d # 粉红色
FOREGROUND_YELLOW = 0x0e # 黄色
FOREGROUND_WHITE = 0x0f # 白色 std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) # 设置文字颜色
def set_cmd_text_color(color, handle=std_out_handle):
return ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) # 重置文字颜色为白色
def reset_color():
set_cmd_text_color(FOREGROUND_DARKWHITE) # 以指定颜色输出文字
def cprint(mess, color):
color_dict = {'暗蓝色': FOREGROUND_DARKBLUE,
'暗绿色': FOREGROUND_DARKGREEN,
'暗天蓝色': FOREGROUND_DARKSKYBLUE,
'暗红色': FOREGROUND_DARKRED,
'暗粉红色': FOREGROUND_DARKPINK,
'暗黄色': FOREGROUND_DARKYELLOW,
'暗白色': FOREGROUND_DARKWHITE,
'暗灰色': FOREGROUND_DARKGRAY,
'蓝色': FOREGROUND_BLUE,
'绿色': FOREGROUND_GREEN,
'天蓝色': FOREGROUND_SKYBLUE,
'红色': FOREGROUND_RED,
'粉红色': FOREGROUND_PINK,
'黄色': FOREGROUND_YELLOW,
'白色': FOREGROUND_WHITE
}
set_cmd_text_color(color_dict[color])
print(mess)
reset_color() # 颜色列表
color_list = ['暗蓝色','暗绿色','暗天蓝色','暗红色','暗粉红色','暗黄色','暗白色','暗灰色','蓝色','绿色','天蓝色','红色','粉红色','黄色','白色'] # print information of this application
print('#'*)
print('This app is used for translating English word to Chineses!')
print('#'*+'\n') # get word from Command line
word = input("Enter a word (enter 'q' to exit): ") # main body
while word != 'q': # 'q' to exit
try:
# 利用GET获取输入单词的网页信息
r = requests.get(url='http://dict.youdao.com/w/%s/#keyfrom=dict2.top' % word)
# 利用BeautifulSoup将获取到的文本解析成HTML
soup = BeautifulSoup(r.text, "lxml")
# 获取字典的标签内容
s = soup.find(class_='trans-container')('ul')[]('li')
# 随机选择输出的颜色
random.shuffle(color_list)
# 输出字典的具体内容
for item in s:
if item.text:
cprint(item.text, color_list[])
print('=' * + '\n')
except Exception as e:
print("Sorry, there is a error!\n"+e)
finally:
word = input("Enter a word (enter 'q' to exit): ")
打包如下:
运行结果
Python的ctypes 和pyinstaller的更多相关文章
- python打包exe之pyinstaller用法
pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行.这个程序完全跨平台,包括Windows.Linux.Mac OS X等多个操作系 ...
- Python程序打包工具PyInstaller
Python程序执行 py文件:直接提供源码,需要使用者自行安装Python并且安装依赖的各种库 pyc文件:pyc文件是Python解释器可以识别的二进制码,是跨平台的,需要使用者安装相应版本的Py ...
- (原)python使用ctypes调用C/C++接口
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6135514.html 参考网址: https://docs.python.org/2/library/ ...
- Python使用ctypes访问C代码
工具:CodeBlocks 新建一个分享库工程( Shared library ),随便编写一个C代码的函数 // test.c #include <stdio.h> int fib(in ...
- Python打包EXE神器 pyinstaller
最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...
- 【Python】 如何用pyinstaller打包python程序成exe
[pyinstaller] pyinstaller在他们的官方网站上下载:http://www.pyinstaller.org/ 下载完pyinstaller之后还要安装一个支持包pywin32. 这 ...
- Python使用Ctypes与C/C++ DLL文件通信过程介绍及实例分析
项目中可能会经常用到第三方库,主要是出于程序效率考虑和节约开发时间避免重复造轮子.无论第三方库开源与否,编程语言是否与当前项目一致,我们最终的目的是在当前编程环境中调用库中的方法并得到结果或者借助库中 ...
- Python程序打包之PyInstaller
1.背景说明 [Python版本]Python 2.7.14 [系统平台]Windows 7 [优缺点描述]据说PyInstaller 比较慢,但是PyInstaller打包出来的exe简洁(就一个文 ...
- Python 使用ctypes调用 C 函数
在python中通过ctypes可以直接调用c的函数,非常简单易用 下面就一步一步解释用法吧,以Linux为例讲解. 1, 首先确定你的python支持不支持ctypes python2.7以后cty ...
随机推荐
- Python学习(三十)—— Django框架简介
转载自:http://www.cnblogs.com/liwenzhou/p/8296964.html Django框架简介 一.MVC框架和MTV框架(了解即可) MVC,全名是Model View ...
- Python学习(二十三)—— 前端基础之jQuery
转载自http://www.cnblogs.com/liwenzhou/p/8178806.html 一.jQuery入门 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQue ...
- python解释器遇到if __name__=="__main__"会如何做?
python解释器遇到if __name__=="__main__"会如何做 # Threading example import time, thread def myfunct ...
- nginx+uwsgi启动Django项目
1.安装项目环境 系统环境:ubuntu16.04 python环境:python3.5.2 Django版本:django1.11.7 nginx环境:nginx_1.10.3 虚拟环境:virtu ...
- web发展阶段简介
web1.0.web2.0和web3.0的区别前言: 其实并没有什么所谓的2.0.3.0,因为你没法准确的界定它是什么样的应用,也没法界定它是什么时候开始的,什么时候结束,它只是互联网本身发展的一种 ...
- Spring中 PROPAGATION_REQUIRED 解释 事物是在一个方法里调用其他的方法,一起成功或者一起失败,是方法之间的关系,而不是某一个方法内部的问题。而且要以抛异常的方式来表明方法的失败,以此来导致事物起作用,大家全失败。
事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 事务传播行为类型 事务传播 ...
- springcloud(六):配置中心git示例
随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多.某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错.配置 ...
- 阿里 EasyExcel 使用及避坑
github地址:https://github.com/alibaba/easyexcel 原本在项目中使用EasyPoi读取excel,后来为了统一技术方案,改用阿里的EasyExcel.EasyE ...
- RabbitMQ快速入门
最近一段项目实践中大量使用了基于RabbitMQ的消息中间件,也积累的一些经验和思考,特此成文,望大家不吝赐教. 本文包括RabbitMQ基本概念.进阶概念.实践与思考等三部分,着重强调相关概念和基于 ...
- sql语句练习50题(Mysql版)
表名和字段–1.学生表Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别–2.课程表Course(c_id,c_name,t_id) – ...