- 军军小站|张军博客
搜索到与相关的文章
Python

Python中eval带来的潜在风险代码分析

0x00前言eval是Python用于执行python表达式的一个内置函数,使用eval,可以很方便的将字符串动态执行。比如下列代码:>>>eval("1+2")>>>eval("[xforxinrange(10)]")[0,1,2,3,4,5,6,7,8,9]当内存中的内置模块含有os的话,eval同样可以做到命令执行:>>>importos>>>eval("os.system('whoami')")win-20140812chj\administrat

系统 2019-09-27 17:53:02 1871

Python

Python中正则表达式的巧妙使用一文包你必掌握正则

前言正则表达式就是从字符串中发现规律,并通过“抽象”的符号表达出来。打个比方,对于2,5,10,17,26,37这样的数字序列,如何计算第7个值,肯定要先找该序列的规律,然后用n2+1这个表达式来描述其规律,进而得到第7个值为50。对于需要匹配的字符串来说,同样把发现规律作为第一步,本文主要使用正则表达式完成字符串的查询匹配、替换匹配和分割匹配。常用的正则符号在进入字符串的匹配之前,先来了解一下都有哪些常用的正则符号,见下表所示:如果读者能够比较熟练地掌握

系统 2019-09-27 17:52:54 1871

Python

python基于Selenium的web自动化框架

1什么是seleniumSelenium是一个基于浏览器的自动化工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:SeleniumIDE、SeleniumWebDriver和SeleniumGrid:SeleniumIDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例。SeleniumWebDriver:提供Web自动化所需的A

系统 2019-09-27 17:52:52 1871

Python

解决Python2.7的UnicodeEncodeError: ‘ascii

python默认环境一般是ascii编码方式,因此Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinalnotinrange(128))。参考可通过如下方式查看默认环境编码方式:importsysprintsys.getdefaultencoding()问题解决有两种方式:1、修改默认环境编码方式为utf-8importsysreload(sys)#不加这个会报”找不到setdefaultenc

系统 2019-09-27 17:52:42 1871

Python

详解Python核心编程中的浅拷贝与深拷贝

一、问题引出浅拷贝首先看下面代码的执行情况:a=[1,2,3]print('a=%s'%a)#a=[1,2,3]b=aprint('b=%s'%b)#b=[1,2,3]a.append(4)#对a进行修改print('a=%s'%a)#a=[1,2,3,4]print('b=%s'%b)#b=[1,2,3,4]b.append(5)#对b进行修改print('a=%s'%a)#a=[1,2,3,4,5]print('b=%s'%b)#b=[1,2,3,4,

系统 2019-09-27 17:52:42 1871

Python

简述Python2与Python3的不同点

在Python2和Python3中都提供print()方法来打印信息,但两个版本间的print稍微有差异主要体现在以下几个方面:1.python3中print是一个内置函数,有多个参数,而python2中print是一个语法结构;2.Python2打印时可以不加括号:print'helloworld',Python3则需要加括号print("helloworld")3.Python2中,input要求输入的字符串必须要加引号,为了避免读取非字符串类型发生的

系统 2019-09-27 17:52:30 1871

Python

python的socket编程入门

Flask或者其他框架都是封装的比较完善,我们可以不去关注路由、SESSION等到底是怎么实现的,现在我们使用socket来实现一个带有注册、登录功能的Todo网站,这样能对后端框架了解的稍微更深入一点(当然你也可以直接去看Flask源码)。主程序runserver.py代码如下:#!/usr/bin/envpython#-*-coding:utf-8-*-importsocketfromextsimportRequestfromrouteimportre

系统 2019-09-27 17:52:26 1871

Python

可能是最优雅的任意进制转换(python实现)

deftrans_map(cint):ifcint<0:print"不合法"returnelifcint<10:returncintelifcint>=10:returnchr(cint-10+65)#将一个m进制的数转换为一个n进制的数deftransfer(m,n,origin):num=anyToTen(m,origin)target=tenToAny(n,num)printtargetdefanyToTen(m,origin):#任意进制的数转换为

系统 2019-09-27 17:52:21 1871

Python

Python进阶之路 3.5.2 for循环

3.5.2for循环hello大家好,不知道在上节中大家练习while循环练习得怎么样了,相信大家都已经熟悉while循环了吧,那么现在我在这里在向大家讲解一下for循环。大家肯定也很懵圈,怎么有个while循环,又有个for循环,for循环又是干嘛的?相信很多刚接触编程的朋友一定很懵圈,哈哈......因为我当时也很懵圈。好了,废话不多说,接下来就给大家将一下for循环和while循环的区别,以及for循环是什么东西。while循环的功能非常强大,它可以

系统 2019-09-27 17:52:18 1871

Python

Python 装饰器实现DRY(不重复代码)原则

Python装饰器是一个消除冗余的强大工具。随着将功能模块化为大小合适的方法,即使是最复杂的工作流,装饰器也能使它变成简洁的功能。例如让我们看看Djangoweb框架,该框架处理请求的方法接收一个方法对象,返回一个响应对象:defhandle_request(request):returnHttpResponse("Hello,World")我最近遇到一个案例,需要编写几个满足下述条件的api方法:返回json响应如果是GET请求,那么返回错误码做为一个注

系统 2019-09-27 17:52:01 1871