python控制网分_python奇技淫巧

本文用作记录,在使用python过程中遇到的一些奇技淫巧,有些代码是本人所写,有些则是python内置函数,有些则取之互联网。在此记录,只为备份以及遗忘时方便查找。

本文将会持续更新,内容仅限记录一些常用好用却又永远记不住的代码或者模块。

控制台操作

控制台不闪退os.system('pause')

获取控制台大小rows, columns = os.popen('stty size', 'r').read().split()

输入输出控制

解决输入提示中文乱码问题raw_input(unicode('请输入文字','utf-8').encode('gbk'))

格式化输出print a.prettify()

接受多行输入text=""

while 1:

data=raw_input(">>")

if data.strip()=="stop":

break

text+="%s\n" % data

print text

---------------------------

>>1

>>2

>>3

>>stop

1

2

3

同行输出Print '%s' % a,

Print '%s \r' % a

标准输入输出sys.stdout.write("input") 标准输入

sys.stdout.flush() 刷新缓冲区

print的功能与sys.stdout.write类似,因为2.x中print默认就是将输出指定到标准输出中(sys.stdout)。

颜色控制

控制台颜色控制(适用于windows)WConio.textcolor(WConio.YELLOW)

print "yellow"

WConio.textcolor(WConio.BLUE)

print "blue"

输出颜色控制(全平台)red = '\033[1;31m'

green = '\033[1;32m'

yellow = '\033[1;33m'

white = '\033[1;37m'

reset = '\033[0m’

print red+"color is red"+reset

print green+"color is green"+reset

进度条控制

方案一from __future__ import division

import sys,time

j = '#'

for i in range(1,61):

j += '#'

sys.stdout.write(str(int((i/60)*100))+'% ||'+j+'->'+"\r")

sys.stdout.flush()

time.sleep(0.1)

方案二import sys

import time

for i in range(1,61):

sys.stdout.write('#'+'->'+"\b\b")

sys.stdout.flush()

time.sleep(0.5)

方案三from progressbar import *

import time

import os

rows, columns = os.popen('stty size', 'r').read().split() #获取控制台size

console_width=int(columns)

total = 10

progress = ProgressBar()

def test():

'''

进度条函数,记录进度

'''

for i in progress(range(total)):

test2()

def test2():

'''

执行函数,输出结果

'''

content="nMask'Blog is http://thief.one"

sys.stdout.write("\r"+content+" "*(console_width-len(content)))

time.sleep(1)

sys.stdout.flush()

test()

更多高级用法可以使用progressbar模块。

系统操作

系统信息

获取python安装路径from distutils.sysconfig import get_python_lib

print get_python_lib

获取当前python版本sys.version_info

sys.version

获取当前时间c=time.ctime()

#自定义格式输出

ISOTIMEFORMAT=’%Y-%m-%d %X’

time.strftime( ISOTIMEFORMAT, time.localtime() )

查看系统环境变量os.environ["PATH"]

获取系统磁盘os.popen("wmic VOLUME GET Name")

获取当前路径(包括当前py文件名)os.path.realpath(__file__)

当前平台使用的行终止符os.linesep

获取终端大小rows, columns = os.popen('stty size', 'r').read().split()

#python3以后存在可以使用os

os.get_termial_size()

退出程序

return:返回函数的值,并退出函数。

exit():直接退出。

sys.exit(): 引发一个SystemExit异常,若没有捕获错误,则python程序直接退出;捕获异常后,可以做一些额外的清理工作。

sys.exit(0):为正常退出,其他(1-127)为不正常,可抛异常事情供捕获。(一般用于主线程中退出程序)

os._exit(0): 直接退出python程序,其后的代码也不会执行。(一般用于线程中退出程序)

网络操作

域名解析为ipip= socket.getaddrinfo(domain,'http')[0][4][0]

获取服务器版本信息sUrl = 'http://www.163.com'

sock = urllib2.urlopen(sUrl)

sock.headers.values()

文件操作

open函数,使用wb、rb代替w、rwith open("test.txt","wr") as w:

w.write("test")

这种写法可以兼容python2/3。

输出一个目录下所有文件名称def search(paths):

if os.path.isdir(paths): #如果是目录

files=os.listdir(paths) #列出目录中所有的文件

for i in files:

i=os.path.join(paths,i) #构造文件路径

search(i) #递归

elif os.path.isfile(paths): #如果是文件

print paths #输出文件名

文件查找import glob

print glob.glob(r"E:/*.txt") #返回的是一个列表

查找文件只用到三个匹配符:”*”, “?”, “[]“

”*”匹配0个或多个字符;

”?”匹配单个字符;

”[]“匹配指定范围内的字符,如:[0-9]匹配数字。

查找指定名称的文件夹的路径def search(paths,file_name,tag,lists):

if os.path.isdir(paths): #如果是目录

if file_name==tag: #如果目录名称为tag

lists.append(paths) #将该路径添加到列表中

else: #如果目录名称不为tag

try:

files_list=os.listdir(paths) #列出目录中所有的文件

for file_name in files_list:

path_new=os.path.join(paths,file_name) #构造文件路径

search(path_new,file_name,tag,lists) #递归

except: #遇到特殊目录名时会报错

pass

elif os.path.isfile(paths): #如果是文件

pass

return lists

数据操作

判断数据类型isinstance("123",(int,long,float,complex)

字符串(string)

字符串推导a="True"

b=a if a=="True" else "False"

>>>print b

True

format方法拼接字符串与变量a="{test} abc {test2}".format(test="123",test2="456")

>>>>print a

123 abc 456

或者:

a="{},{}".format(1,2)

>>>>>print a

1,2

去掉小数点后面的数字a=1.21311

b=Int(math.floor(a))

字符串倒置>>> a = "codementor"

>>> a[::-1]

字符串首字母变大写info = 'ssfef'

print info.capitalize()

print info.title()

返回一个字符串居中,并使用空格填充至长度width的新字符串。"center string".center(width) #width设置为控制台宽度,可控制输出的字符串居中。

列举所有字母print string.ascii_uppercase 所有大写字母

print string. ascii_lowercase 所有小写字母

print string.ascii_letters 所有字母(包括大小写)

列表(list)

列表去重ids = [1,4,3,3,4,2,3,4,5,6,1]

ids = list(set(ids))

判断列表为空a=[]

if not a:

列表运算a=[1,2,3]

b=[3,4,5]

set(a)&set(b) 与

set(a)|set(b) 或

set(a)-set(b) 非

单列表元素相加a = ["Code", "mentor", "Python", "Developer"]

>>> print " ".join(a)

Code mentor Python Developer

多列表元素分别相加list1 = ['a', 'b', 'c', 'd']

list2 = ['p', 'q', 'r', 's']

>>>for x, y in zip(list1,list2):

print x, y

ap

bq

cr

ds

将嵌套列表转换成单一列表a = [[1, 2], [3, 4], [5, 6]]

>>> import itertools

>>> list(itertools.chain.from_iterable(a))

[1, 2, 3, 4, 5, 6]

列表内元素相加a=[1,2,3](数字)

sum(a)

产生a-z的字符串列表map(chr,range(97,123))

列表复制a=[1,2,3]

b=a

当对b进行操作时,会影响a的内容,因为共用一个内存指针,b=a[:] 这样就是单独复制一份了。

列表推导

if+else配合列表解析[i if i >5 else -i for i in range(10)]

多层嵌套列表a=[[1,2],[3,4]]

b=[for j in i for i in a]

print b

[1,2,3,4]

生成一个生成器,调用next方法,可以减少内存开支。a=(i else i+1 for i in b if i==1)

字典推导

更换key与value位置dict={"a":1,"b":2}

b={value:key for key value in dict.items()}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值