Tag Archives: python

利用python从大文本文件中获取含有特定字符的行

实现的内容如标题,其实也有一些软件能够实现上述效果,若是利用mac或者是linux直接用vim也可以,这里针对以上都不符合,又不想费太大劲去找其他方法的方法 很简单,先从python官网下载一个python软件,直接安装就可以,这里一般选择最新的就可以了 然后照着下面的代码根据自己要求进行改造,不懂的欢迎交流: 除了摘取,有些时候打不开切成几个小文件也可以,代码如下:

python3.x利用qrcode和Pillow(python2.x的PIL的派生版本)批量生成二维码

首先利用pip安装qrcode和Pillow 安装qrcode 安装Pillow 备注:第一次安装这两个pip包的时候,我这边出现了拉取不下来的情况,最后利用vpn翻墙后便装上了,有人说包的源在国外,所以会被墙,若是出现我的情况,试一下翻墙是否管用吧! 随后直接上源码吧

python2 读取邮件内容简单事例源码:

python2 利用imap协议读取邮件内容简单事例源码: 备注:获取授权码后,第一次还是会报错,会提示类似这样的信息:A3 NO EXAMINE The login is not safe! Please update your mail client: http://mail.163.com/dashi,此时你会发现邮箱里面收到一个名为“网易邮箱提醒:阻止了一次不安全的收信请求”,打开邮件,在下面有一个如您确认当前所用的邮件客户端为可信任客户端仍继续使用,并愿自行承担信息泄露风险和损失,可前往(这里)设置…… 点击这里完成相应的设置便可。 参考文章: http://www.cnblogs.com/yhlx/archive/2013/03/22/2975817.html http://blog.41ms.com/post/53.html

python list(数组)、tuple(元组)、dict(字典)、set(与dict类似,也是一组key的集合)

本文主要是介绍以上四种数据类型的常规简单操作 1、list,Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 可以采用append(‘value’)在list末尾插入新的元素,insert(Index,’value’)可以在指定位置插入元素,pop(index)删除指定位置的元素,其中listTemp[index]可以拿到指定位置的数据,listTemp[-1]可以拿到最后的元素,len(listTemp)可以拿到数组的长度,value in listTemp可以判断元素是不是在指定的数组里,去重可以采用先转成set,再转回来,示例如下: 2、tuple,和list一样也是一种有序列表。tuple中的值一旦被赋予便不能修改,也没有append(),insert(),但可以在后面追加新的值,可以正常地使用classmates[0],classmates[-1]。 tuple定义,若是打算定义一个空的tuple,可以这样 t=(),若是打算定义里面存在元素可以这样 t=(1,2,3),若是打算定义只有一个元素的tuple时要注意了,需要在后面加上一个“,”,如 t = (2,),因为否则会与数学中的小括号冲突了,发生歧义。 tuple在末尾追加新元素的方式: 3、dict(字典),d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85},d就算一个字典,很明显d[‘Michael’]拿到的值是95,字典可以根据key值(上例中的Michael)来修改字典中某个key下的value值,如d[‘Michael’]=93,也可以直接插入对应的键值对,如d[‘Adam’] = 67。 上面采用d[‘Michael’]拿值的方式是最简单直接的,但在没有对应key值的时候会报错,为了避免可以通过in判断key是否存在,如’Thomas’ in d,除了判断还以采用dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value,如d.get(‘Thomas’),不存在返回none,d.get(‘Thomas’,-1),不存在返回-1。 删除一个key,用pop(key)方法,对应的value也会从dict中删除,如:d.pop(‘Bob’),删除调了d的字典中key为Bob的key和value。 请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。 和list比较,dict有以下几个特点: 查找和插入的速度极快,不会随着key的增加而变慢; 需要占用大量的内存,内存浪费多。 而list相反: 查找和插入的时间随着元素的增加而增加; 占用空间小,浪费内存很少。 4、set:set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。 s = set([1, 1, 2, 2, 3, 3]),实际存到s里面的是{1, 2, 3},注意,传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。 set有add、remove等方法,如:s.add(4)、s.remove(4)。 set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作,如: 参考文章: 使用dict和set 使用list和tuple python对list去重的各种方法

Python模块学习:tempfile 临时文件(夹)操作

应用程序经常要保存一些临时的信息,这些信息不是特别重要,没有必要写在配置文件里,但又不能没有,这时候就可以把这些信息写到临时文件里。其实很多程序在运行的时候,都会产生一大堆临时文件,有些用于保存日志,有些用于保存一些临时数据,还有一些保存一些无关紧要的设置。在windows操作系统中,临时文件一般被保存在这个文件夹下:C:/Documents and Settings/User/Local Settings/Temp。其实我们最常用的IE浏览器在浏览网页的时候,会产生大量的临时文件,这些临时文件一般是我们浏览过的网页的本地副本。Python提供了一个tempfile模块,用来对临时数据进行操作。查阅Python手册,里面介绍了如下常用的方法: tempfile.mkstemp([suffix=”[, prefix=’tmp'[, dir=None[, text=False]]]]) mkstemp方法用于创建一个临时文件。该方法仅仅用于创建临时文件,调用tempfile.mkstemp函数后,返回包含两个元素的元组,第一个元素指示操作该临时文件的安全级别,第二个元素指示该临时文件的路径。参数suffix和prefix分别表示临时文件名称的后缀和前缀;dir指定了临时文件所在的目录,如果没有指定目录,将根据系统环境变量TMPDIR, TEMP或者TMP的设置来保存临时文件;参数text指定了是否以文本的形式来操作文件,默认为False,表示以二进制的形式来操作文件。 tempfile.mkdtemp([suffix=”[, prefix=’tmp'[, dir=None]]]) 该函数用于创建一个临时文件夹。参数的意思与tempfile.mkdtemp一样。它返回临时文件夹的绝对路径。 tempfile.mktemp([suffix=”[, prefix=’tmp'[, dir=None]]]) mktemp用于返回一个临时文件的路径,但并不创建该临时文件。 tempfile.tempdir 该属性用于指定创建的临时文件(夹)所在的默认文件夹。如果没有设置该属性或者将其设为None,Python将返回以下环境变量TMPDIR, TEMP, TEMP指定的目录,如果没有定义这些环境变量,临时文件将被创建在当前工作目录。 tempfile.gettempdir() gettempdir()则用于返回保存临时文件的文件夹路径。 tempfile.TemporaryFile([mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None]]]]]) 该函数返回一个 类文件 对象(file-like)用于临时数据保存(实际上对应磁盘上的一个临时文件)。当文件对象被close或者被del的时候,临时文件将从磁盘上删除。mode、bufsize参数的单方与open()函数一样;suffix和prefix指定了临时文件名的后缀和前缀;dir用于设置临时文件默认的保存路径。返回的类文件对象有一个file属性,它指向真正操作的底层的file对象。 tempfile.NamedTemporaryFile([mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None[, delete=True]]]]]]) tempfile.NamedTemporaryFile函数的行为与tempfile.TemporaryFile类似,只不过它多了一个delete参数,用于指定类文件对象close或者被del之后,是否也一同删除磁盘上的临时文件(当delete = True的时候,行为与TemporaryFile一样)。 tempfile.SpooledTemporaryFile([max_size=0[, mode=’w+b'[, bufsize=-1[, suffix=”[, prefix=’tmp'[, dir=None]]]]]]) tempfile.SpooledTemporaryFile函数的行为与tempfile.TemporaryFile类似。不同的是向类文件对象写数据的时候,数据长度只有到达参数max_size指定大小时,或者调用类文件对象的fileno()方法,数据才会真正写入到磁盘的临时文件中。 蛮简单、实用的一个模块,不是吗? 原文:http://python.jobbole.com/81515/

python urllib2 爬虫返回乱码

python urllib2 爬虫返回乱码,查了半天,很多人都说是中文乱码的问题,但我试了半天,也感觉不像是,后面查了,原来是压缩的问题。压缩了,需要手动解压,urllib是不会帮你解压的,解压部分的源码:

双色球全部组合数

今天想看下双色球的全部组合情况,于是就用python写了如下代码 其实,这是非常简单的排列组合问题,直接如下33*32*31*30*29*28/(1*2*3*4*5*6)*16 = 17721088;

字符编码,字符、ASCII、Unicode、ASCII UNICODE UTF-8

字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。 你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。 因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。 现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。 字母A用ASCII编码是十进制的65,二进制的01000001; 字符0用ASCII编码是十进制的48,二进制的00110000,注意字符’0’和整数0是不同的; 汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。 你可以猜测,如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。 新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。 所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间: 字符 ASCII Unicode UTF-8 A 01000001 00000000 01000001 01000001 中 x 01001110 00101101 11100100 10111000 10101101 从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。 搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式: 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。 用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件: 浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器: 所以你看到很多网页的源码上会有类似<meta charset=”UTF-8″ />的信息,表示该网页正是用的UTF-8编码。   摘自:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000

python2.x启动http服务

一行代码搞定,python2.x可以用下面的方法,代码如下: python3.x可以用下面的方法,代码如下: 这只是启动了一个简单的http服务,若是想真正跑起来,还需要做些东西!

python常用工具包整理

python常用工具包整理,写给自己的一篇,会根据实际使用不断更新: py2exe:用于生成可执行文件; psutil:可以读取系统、内存信息 Pillow,可以用来处理图片的,2.x版本可以看PIL mysql-connector-python,Mysql的驱动 numpy,用于科学计算的NumPy库 Jinja2,用于生成文本的 pySerial,与串行端口的数据通信 操作execl的 最后,知乎上有人发了如何学习python,连接拿来记录下:https://www.zhihu.com/question/20039623

Windows下多个python 版本开发环境的管理

在我的Windows 8 下安装了: python 2.7:C:\Python27 python 3.3:C:\Python33 希望在command line 输入python2 就是执行C:\Python27\python.exe;输入python3 就是执行C:\Python33\python.exe 那么可以利用Windows内建的Doskey指令(参考:Simplify Command Entry with Doskey Macros )及Registry指令达成。 Doskey 指令,简单来说其实就是别名,把一长串指令用简单的符号来取代。 例如:在Windows 环境下,还是习惯使用unix 的ls –al 而不是输入dir /A /W。 此时,就可以以利用doskey 指令,在Command line 输入: doskey ls= dir /A /W 之后,在Command line 输入ls 就等于执行dir /A /w 的指令啰… 但是,每次进入Command line 就必须重新设定Doskey 一次,所以我们必须将命令先储存起来。 在command line 载入后,马上帮我们重新设定Doskey。 所以,先建立一个pythonautorun.bat档案,档案内容如下: @echo off doskey python2=c:\Python27\python.exe $* doskey python3=c:\Python33\python.exe $* 其中@echo off 是把命令输入关闭… doskey python2=c:\Python27\python.exe $*,则是表示输入python2 等于执行c:\Python27\python.exe 而$*则是带入每一个参数,例如python2 test test2就等于c:\Python27\python.exe test test2 做好pythonautorun.bat后,将档案放在固定的位置,例如:c:\windows\pythonautorun.bat 在command line输入regedit,进入registry编辑模式: 找到HKEY_CURRENT_USER\Software\Microsoft\Command Processor位置:  新增字符串值(REG_SZ),名称: Autorun,数据  c:\windows\pythonautorun.bat 这样每次进入cmd,就会自动执行pythonautorun.bat,然后就可以方便的执行python2或python3了。   参考文章:http://jlan.me/?p=379