Home >  > Python常用代码(二)

Python常用代码(二)

0

一、输入输出控制

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

九、模块操作
导入上级目录下的包

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 :   原版本不可用,这是改良版本  
-------------------------------------------------
"""
本文暂无标签

发表评论

*

*