Python

Python: pyinstaller模块,将python脚本,打包成单个exe

最近开发一些小工具给技术部分享使用,提高效率, 但是python代码执行需要对方的本地环境安装python3.6, 并且代码到处传播并不好, 所以专门尝试了一次打包exe 模块:pyinstaller 环境:python3.6 + win10 打开cmd命令行 安装模块 python -m pip install pyinstaller 普通模块到这就安装完了, 但是pyinstaller不行,执行各种报错。具体见下文 消除报错: compile需要c支持 下载安装 pywin32-221.win32-py3.6.exe 这里对应的python为32位版本 pip安装pyinstaller发行版只支持到python3.4

Python

Python: 创建变量的一些区别和心得

a = ‘string’ 最早写function时,变量几乎不预设,用到时直接赋值,python也感觉非常随意,不受任何约束。 def function(a=None) 后来熟悉了class写法,经常玩传参入参,对变量的分支判断,这时候会预设赋值None,有了预设变量的习惯。 注:整理博客时,觉得,如果使用时传少了,抛异常就行 预设变量的类型,便于提示可用方法 class Class: def __init__(self, a=None) self._a = a

Python

Python: 数组越界的坑,遍历同时操作元素

需求 根据文件变化,实时更新并管理内存里的用例文件树列表。 处理 获取目录最新的文件列表 对已有的用例数据集进行更新 判断内存里的文件树每个文件需要(保留/删除/新增) 调了一个小时,印象太深刻了。 越界坑 当遍历数组时,数组可能会被删掉元素,这时遍历的数组末尾下标可能会取不到值,抛异常out of range 解决 请教了开发,说这样操作数据结构已经不合适了,让我选择map这类字典来操作,瞬间天亮了。 之前也考虑过,但不如开发经验丰富,直接指出数据结构不适合这样的处理。 写这段文字时,已经知道怎么改了

Python

Python: 字符编码的打地鼠游戏

引用:Unicode之痛— PyCoder's Weelky CN “如果你和其他 Python 程序员一样,那你肯定也碰到过如下情况:你编写了一段很漂亮的代码,事情看起来很顺。然后某一天一个很奇怪的”方言字符”不知道从哪冒了出来,你的程序中就开始大量涌现 UnicodeErrors 。 你好像知道这种问题应该怎样解决,于是呢,就去在错误出现的地方添加了 encode 和 decode ,但是UnicodeError又开始出现在其他的地方。于是你又在另外一个地方添加了 decode 抑或 encode 。在你玩过一段”编码打地鼠”游戏之后,问题似乎被解决。 之后某一天,另一种”

Python

Python: python3.6在windows里pip安装dubbo-telnet的脱坑经历

pip安装命令 windows安装要麻烦点,首先在cmd里使用 python -m pip install dubbo-telnet 而不像在linux里安装使用pip install dubbo-telnet直接成功。 encoding问题 执行pip安装后,下载成功,但是安装会报错, 提示long_description=open(“README.PYPI”).read(), UnicodeDecodeError: ‘gbk’ codec can’t decode 经过查资料明白这是因为windows的cmd命令行窗口使用gbk编码,而这行命令在python3后默认使用本地编码来open,导致报错。 修改setup.py 使用

Python

Python: 关于Windows和Unix的换行区别

关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”

Python

Python: 由传参理解了一些面向对象开发

早上看到一堆文件的版本号写错了,手动一个一个改很笨,于是搜了下,用python写了个方法,处理指定目录下的所有文件名的某个关键词改为另个关键词…… 在设计方法的形参时,发现要传路径,旧词,新词,这个方法循环处理时,还要多传一个文件名,脑中闪过和开发一起商量bug时,他们好像传了一个对象进去…… 又想起昨天查js时,打avalon的model各种属性和对象方法…… 瞬间明白了啥叫面向对象开发,我之前虽然封装了各种方法和类,然而我在调用和返回时,一直在用变量传递,以前我以为写了类就叫面向对象……然而这是不完整的,因为我一直在操作变量,而不是对象,我的所有业务基于字符串,数组,字典,很少有对象。 只有一些专类才用对象操作,最明显的是time和log两个自己开发对象,有各种属性,各种方法。 有了这个想法了,我准备调整自己设计的自动化框架,

Python

Python: logging日志重复的原因是handler叠加了

使用if not _logger.handlers 来控制是否操作addHandler, 假如已有handler,就不需要再次添加了 实现方法还有很多, 最笨的就是用不同的object来写不同的日志,但这样一旦需要维护时,成本会很高 还有一种是 一直在传递main启动脚本时创建的logging Object到class里使用 但是这样写class就感觉很怪了,这个class被某个参数给拖住的感觉 殊途同归,它的最终切入点就是搞定记录日志时,handler不会被重复加入 _logger = logging.getLogger(‘Order’) # print(‘创建_logger时的handlers:[{}]’.format(_logger.handlers)) if not _logger.handlers:

Python

Python: requests实施API自动化,首战心得

自我管理 测试大多时候,总有很多活,比如项目任务,运维任务,加急任务等等,所以如果你能在工作时间写代码就是种幸福了,再次就是加班时间来练代码,最不济的是要在家练。为什么在家练代码最次?因为自我管理太难了。 7天假期实际投入写代码的时间,还不如1天上班通过加班练的时间… 代码规划 没有一蹴而就的代码框架,第一次写完过程,它仅仅实现了基本流。除此之外呢?比如各种异常设计,方法扩展,参数控制,测试扩展…都很弱。而且随着拆分过程封装方法,再不断调试了所有异常,自己还慢慢发现第一版所谓的90%完成度,从后面回看当时,其实最多只有20%这样的完成度。那么一个自动化计划,如何从初版的20%进化到100%

Python

Python: 自动化框架实施过程的心得

写完一个过程,改起来头大; 然后意识到要写成方法,变量及方法名的规划,打乱流程重构,便于拆出并封装类; 然后去了解如何将python脚本的服务化,并对最基础的方法优化,一个方法只做好一件事; 把业务往上抽离,最后分析测试case的共性与实际扩充时的文档特征,对整个框架进行调度设计…… 入职一年远离自动化,但坚持技术学习并未真正远离,因为在业务测试和技术架构认识的积累,才能清楚整个自动化框架需要怎么设计 还有很多知识要学以致用

Python

UIAutomator: 搭建安卓app自动化python脚本

======================== 【环境】 编辑器:PyCharm 解释器:Python 2.7 自动化模块:uiautomator 调试器:adb 工具 python的uiautomator模块作者xiaocong,他在github说明文档里提到uiautomator模块使用的前提条件要求安装Android SDK,这玩意好像还要先搞JDK环境,搞定JDK+SDK后,确实是可以跑uiautomator脚本的。 本着偷懒和较真的心态,我思考那么如果没有JDK+Android SDK呢?于是把JDK和SDK的path变量给删了,确认java和javac命令无效,然后把adb路径指向我平时用来刷机的adb目录。运行uiautomator的test.py,手机正常开屏和关屏。 ======================== 【问题】 1.目录权限 我在安装模块后,

Python

Selenium: Python版开发搭建(win10)

先声明一下,本文对于Selenium RC 远程 和 Grid多端并行都没有涉及,仅仅是写了Python下的初级Selenium搭建。另外以下操作都是windows10下进行,至于win2003,win7,win8,Ubuntu,Centos,RHEL什么的,都是大同小异,琢磨一下就搞定了。 自动化环境组成:Python & Selenium 解释器: Python 编辑器: PyCharm,依赖JDK环境 自动化工具: Selenium 其中Webdriver集成编程用的接口库。 调试浏览器: Firefox,选择开发者必备的浏览器, Firebug和Firepath,定位辅助插件,

Python

Python: 练习作品-双色球随机组

代码说明 虽然头文件设定了utf-8,但没有中文,因为嫌麻烦。 这段代码是今天上班公交路上写的,回家路上完工,睡觉前测试修补完成。 代码编写工具,在手机上使用Qpython加完成编写和调试。 这段代码的目标是为了练习class语句的用法。 虽然学习了一些代码规范,比如逗号空格,运算和逻辑符空格,对齐规范,但是用print时,对print()用法很不习惯,也没有及时查资料,一会儿print(),一会儿print "",需要下次改进。 双色球随机数的对象用法: 创建对象 a = DoubleNumber() 默认初始化class属性的self.NumList为1~36的数组 也可以传参 a = DoubleNumber(

Python

Python: 练习作品-猜数字游戏

代码说明: 这段小游戏是学了循环和函数后的练习作品,使用python2.7通过eclipse编写,使用def函数封装功能,使用list数组进行数据的临时管理,没有做本地文件保存或数据库操作。也许后面还会对它进行class对象封装改造 游戏规则: 程序会随机给出一个999以内的数字 玩家输入一个猜测答案看看是否猜中 游戏会记录你的猜测成绩,并且可以查询 每次猜测游戏通过5种情况来暗示你与答案的差距 玩家通过不同的暗示来调整自己的回答,以求最快猜中数字 游戏金手指是输入999999直接猜中答案 游戏彩蛋是极短次数猜中会增加天才战绩 如何运行它?保存为py文件后, Windows - 电脑安装有python2.7,打开idle并执行py文件 Android - 请安装Qpython后运行py文件即可 Linux/Mac - 大部分自带python,如果版本正好是2.