一、输入输出控制
raw_input(unicode('请输入文字','utf-8').encode('gbk')) #解决输入提示中文乱码问题 print a.prettify() #格式化输出
二、进度条控制
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()
三、系统信息
获取python安装路径
from distutils.sysconfig import get_python_lib print get_python_lib
获取当前时间
c=time.ctime() #自定义格式输出 ISOTIMEFORMAT=’%Y-%m-%d %X’ time.strftime( ISOTIMEFORMAT, time.localtime() )
获取当前路径(包括当前py文件名)
os.path.realpath(__file__)
四、网络操作
域名解析为ip
ip= socket.getaddrinfo(domain,'http')[0][4][0]
获取服务器版本信息
sUrl = 'http://www.163.com' sock = urllib2.urlopen(sUrl) sock.headers.values()
五、文件操作
输出一个目录下所有文件名称
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
六、字符串
去掉小数点后面的数字
a=1.21311 b=Int(math.floor(a))
字符串倒置
>>> a = "codementor" >>> a[::-1]
字符串首字母变大写
info = 'ssfef' print info.capitalize() print info.title()
七、判断列表为空
a=[] if not a:
将嵌套列表转换成单一列表
a = [[1, 2], [3, 4], [5, 6]] >>> import itertools >>> list(itertools.chain.from_iterable(a)) [1, 2, 3, 4, 5, 6]
八、字典
更换key与value位置
dict={"a":1,"b":2} b={value:key for key value in dict.items()}
筛选出值重复的key
list1=self.dict_ip.items() ddict=defaultdict(list) for k,v in list1: ddict[v].append(k) list2=[(i,ddict[i]) for i in ddict if len(ddict[i])>1] dict_ns=dict(list2)
字典值判断
b={"a":1} a=b.get("a","") #如果不存在a,则返回”” c=a if a else 0 #如果存在a,则返回a,不然返回0
#字典判断键是否存在(python2用has_key):
if not rank.__contains__['seo学习']:
对字典进行排序
# 按值降序 # a[1]--->对值排序,a[0]--->对键排序 # reverse=True,代表降序;reverse=False,代表升序,或者不写reverse a = {'seo':2312121,'itseo':313,'百度seo':31321} b = sorted(a.items(),key=lambda a:a[1],reverse=True) print (b)
九、模块操作
导入上级目录下的包
sys.path.append("..") from spider.spider_ import spider_
增加模块属性
有时候源代码中,我们需要写上自己的名字以及版本介绍信息,可以用__name__的方式定义。 a.py: #! -*- coding:utf-8 -*- __author__="nMask"
动态加载一个目录下的所有模块
目录: ---test ----a.py ----b.py ---c.py c.py导入test下面的所有模块: for path in ["test"]: for i in list(set([os.path.splitext(i)[0] for i in os.listdir("./"+path)])): if i!="__init__" and i!=".DS_Store": ##排除不必要的文件 import_string = "import path+"."+i+" exec import_string #执行字符串中的内容
十、程序操作
Ctrl+C退出程序
import signal import sys import time def handler(signal_num,frame): print "\nYou Pressed Ctrl-C." sys.exit(signal_num) signal.signal(signal.SIGINT, handler) # 正常情况可以开始你自己的程序了。 # 这里为了演示,我们做一个不会卡死机器的循环。 while 1: time.sleep(10) # 当你按下Ctrl-C的时候,应该会输出一段话,并退出.
来源:https://thief.one/2017/04/19/1/
十一、文件头
# -*- coding: utf-8 -*- """ ------------------------------------------------- Author : 蜗牛博客 date: 2020/Apr/04 Description : 原版本不可用,这是改良版本 ------------------------------------------------- """
十二、输出百分比,小数位
收录率: {:.2%}.format(index_page/all_page)
十三、写入数据库的引号问题(gogo闯)
# 用replace将" ---> \" a = '''<img src="http://www.baidu.com">''' print (a.replace('"','\"')) # 用replace将"---> ' a = '''<img src="http://www.baidu.com">''' print (a.replace('"','\''))
十四、将字符串当成python字典执行
atrr_dict = eval(attr)
十五、最简单的下载图片方法
import urllib url = r"http://junyiseo.com/wp-content/uploads/2016/01/6-1.jpg" #下载图片的地址 path = r"/root/my1.jpg" #保存图片的地址和名称 data = urllib.urlretrieve(url,path)
十六、批量修改图片大小
将图片改成长或宽为600,另一边为对应比例的大小。
import os from PIL import Image images = [file for file in os.listdir() if file.endswith(('jpeg', 'png', 'jpg'))] for image in images: img = Image.open(image) img.thumbnail((600,600)) img.save("resized_"+image, optimize=True, quality=40)
按原来的比例调整图片尺寸。
fixed_height = 420 image = Image.open('1.jpeg') height_percent = (fixed_height / float(image.size[1])) width_size = int((float(image.size[0]) * float(height_percent))) image = image.resize((width_size, fixed_height), PIL.Image.NEAREST) image.save('resized_nearest.jpg')