python基础
来源:互联网 发布:摩尔气体常数实验数据 编辑:程序博客网 时间:2024/06/07 07:03
一、文件操作
1、打开文件 全部读到内存 内存搜索--查开房
fop =open(r"C:\aa.txt","r")lines =fop.readlines() # 读取所有到list 一次读取很大的文件,很卡很慢,集合上限,print linesfop.close()2、一次读一行进行判断 硬盘搜索--查开房
fop =open(r"C:\aa.txt","r")while True: line=fop.readline() #读取一行 if line.find("a")!=-1: #查找 print line if not line: #字符串为空退出 break注:
文本默认是utf-8,如果是ANSI先解码,再编码
line=fop.readline().decode("gb2312").encode("utf-8") #读取一行
二、遍历文件目录
1、遍历文件夹 只能遍历文件下的一级目录
import osimport os.pathpath=r"C:\hello"def eachfile(filepath): pathdir=os.listdir(filepath) for alldir in pathdir: filechild=os.path.join('%s%s' % (filepath, alldir) ) print filechildeachfile(path)2、遍历文件夹下的各层文件
def getallfileandpath (filepath): parents =os.listdir(filepath) for parent in parents: child=os.path.join(filepath,parent) if os.path.isdir(child): #是文件夹递归调用,打印是文件夹 getallfileandpath (child) print (child+"文件夹") else: #是文件直接打印文件名 print (child+"文件")
3、应用模型-递归调用
def add100( num): if num == 0: return 0 else: return add100(num-1)+numprint add100(100)
三、文件操作
1、增删重命名查询
import os获得当前目录print os.path.abspath('.')创建文件夹os.mkdir(r"C:\123")删除文件夹os.rmdir(r"C:\123")删除文件夹os.remove(r"c:\2.txt")把1.txt重命名为2.txtos.rename(r"c:\1.txt",r"c:\2.txt") #所有文件print [ x for x in os.listdir("D:\\") ] 当前目录所有文件print [ x for x in os.listdir(".") ] 列举当前目录print [ x for x in os.listdir(".") if os.path.splitext(x)[1]=='.py' ]2、筛选器
print filter( lambda x: x%2==1,range(0,101)) #奇数print filter( lambda x: x%2==0,range(0,101)) #偶数Mylist =['A','',' ',None,'','B']print filter( lambda strs : strs and strs.strip() ,Mylist) #['A', 'B']
四、时间操作
1、格式化时间
import timeimport calendarticks=time.time()print ticks #时间戳 ,距离1970.1.1多少秒 1488902547.0localtime=time.localtime(ticks) #转化为本地时间localtime=time.asctime(localtime)print localtime #打印本地时间格式化 Wed Mar 08 00:02:27 2017#格式化时间print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) #2017-03-08 00:02:27
2、打印日历
cal=calendar.month(2017,3)print cal# March 2017# Mo Tu We Th Fr Sa Su# 1 2 3 4 5# 6 7 8 9 10 11 12# 13 14 15 16 17 18 19# 20 21 22 23 24 25 26# 27 28 29 30 31
3、定时任务
import timei=0while (True): print "时间过了"+str(i)+"秒" time.sleep(0.1) #实数 每休眠1s i+=14、设计倒计时,每10s提醒一次
import datetimeimport timewhile True: baby = datetime.datetime(2017, 6, 7, 9, 0, 0) # 高考倒计时 today = datetime.datetime.now() # 今天日期 day = (baby - today).days # 剩下几天 # print day seconds = (baby - today).seconds # 一共多少秒 sec = seconds % 60 # 剩下的秒 min = seconds / 60 % 60 # 一共多少分钟 hour = seconds / 3600 # 小时 if hour > 24: hour -= 24 day += 1 print "剩下%d天%d小时%d分钟%d秒" % (day, hour, min, sec) time.sleep(10) #每10秒提示一次
五、类
1、动态增加属性
from types import MethodType #从type命名空间载入这个方法class Student: #object通用的类 passdef set_name(self,name):#外部方法 不是类内部的方法 self.name=nameprint type(Student)s=Student()s.name="china" #动态增加属性,本来没有属性,动态添加print s.names.set_name=MethodType(set_name,s,Student)#动态载入方法,set_name方法,s对象,stfuent类型s.set_name("hjk") #调用动态增加的方法print s.name
2、使其只能引用自身属性,不能添加别的属性 前提继承object
class teacher(object): __slots__ =('name') #__slots__限定增加属性,需要继承object发挥作用, passt= teacher() #只有该可以正常打印t.name="ak47"print t.namet.id=123print t.idt.stunum="123x"print t.stunum
六、异常与错误
1、异常与finally的使用
try: f=file("hello.txt","r") print"read file"except IOError: print "文件不存在"except: print "其他异常"finally: f.close() #关闭文件,异常最终执行try: num = 10 / 0except ZeroDivisionError: #Error会有提示 print "不能为0"except: print "其他异常"
2、自定义错误 assert
t =[ ] #列表 t =[1,2]assert len(t) >=1 #测试自己程序错误,编译的时候检查# month=13# assert 1<=month <=12 ,"你的脑子进水了
七、多线程
1、# 实现每秒中打印一次时间
import timeimport threaddef mythread (name,delay): count=0 while True: count +=1 time.sleep(delay) print "%s,%s" % (name,time.ctime(time.time())) #打印延时和当前时间thread.start_new_thread(mythread,("th1",1)) #延时1sthread.start_new_thread(mythread,("th2",2))while True: #主线程不退出 pass
2、进程操作
import subprocess #进程 Popen打开一个线程 运行在进程中的线程pingP= subprocess.Popen(args='ping -n 4 www.taobao.com',shell=True) #运行在进程中的线程pingP.wait() #等待# print pingP.stdout.read() #输出信息print pingP.pid #线程编号print pingP.returncode #线程返回值
八、处理中文乱码
1、 Python默认编码格式:ascii
-*- coding: UTF-8 -*- 只是保存py文件的编码#!/usr/bin/python# -*- coding: UTF-8 -*-#你好- coding: UTF-8 保存py文件的编码import sysprint sys.getdefaultencoding() # Python默认编码格式:asciiprint "你好" #asciiprint u"你好" #unicode 宽字符
2、显示设置utf-8
import sysreload(sys)sys.setdefaultencoding("utf-8")print sys.getdefaultencoding() #ascii 默认编码格式仍是 字符串编码 #这样显示设置了之后是utf-8
3、读文件
3.1正常的读
fop =open(r"c:\1.txt","r")while True: line=fop.readline().decode("gb2312","ignore") #读取ANSI文件 print line if not line: break
3.2读取ANSI文件,gbk gb2312 如果出现异常,错误信息忽略
fop =open(r"c:\1.txt","r")while True: line=fop.readline().decode("gb2312","ignore") #读取ANSI文件,gbk gb2312 如果出现异常,错误信息忽略 if line.find("嘿嘿") !=-1 : #搜索34 print line if not line: break
同下读,读的时候直接设定编码:
import codecsf=codecs.open(r"Z:\C\360CloudUI\dangdangwang.txt","rb","gbk","ignore")#有垃圾字符忽略while True: line=f.readline() print line if not line: break
3.3读取:utf-16 unicode
import codecsf=codecs.open(r"Z:\C\360CloudUI\unicode.txt","rb","utf-16")#utf-16读取unicodewhile True: line=f.readline() print line if not line: break
九、一些基础知识点儿汇总
1、生成器--顺序执行,一段工作,每段工作包含数据与行为, yield存储数据结果
1.1实现斐波那契
def fib(data): n,a,b=0,0,1 # n=0 a=0 b =1 while n<data: print b a,b=b,a+b # a=b, b=a+b n=n+1print fib(6)1.2简单生成器应用
def fibx(data): n,a,b=0,0,1 # n=0 a=0 b =1 while n<data: yield b #产出,加入链表 a,b=b,a+b # a=b, b=a+b n=n+1fibdata=fibx(6)print fibdataprint fibdata.next()print fibdata.next()print fibdata.next()print fibdata.next()print fibdata.next()2、高阶函数,函数作为另外个函数的参数,这个函数为高阶函数
def add(x,y,z): return z(x)+z(y)print add(-4,10,abs)3、数组高级用法
3.1
Mylist =range(1,20 ) #范围print Mylist
3.2
Mylist1 =[]for data in range(1,20): #循环 Mylist1.append(data*data)print Mylist1
3.3
Mylist2=[x+2 for x in range(1,10)] #生成数据高级语法 打印3-11print Mylist2Mylist3=[x+x for x in range(1,10)] #生成数据高级语法print Mylist3Mylist5=[x+x for x in range(1,10) if not x%2==0 ] #生成数据高级语法print Mylist5
3.4
Mylist6=[m+n+"123" for m in "abcd" for n in "xyzs" ] #双层 ['ax123', 'ay123', 'az123', 'as123'...print Mylist6Mylist7=[m+n+s for m in "abcd" for n in "xyzs" for s in "uiop" ] #双层print Mylist74、实现自定义简单的mapreduce
def f(x): return x*xmylist=map(f,range(1,10)) #多线程,map针对数据单独操作print mylistdef add(x,y): return x+y# print reduce(add,range(1,101)) #5050print reduce(add,mylist) #针对数据归并操作
与lambda自定义
# 1-》10 *3+1 addprint reduce(lambda x,y:x+y,map(lambda x :3*x+1,range(1,11)))5、可变参数
def add(*args): #可变参数 ax=0 for n in args: ax+=n return axprint add(1,2)print add(1,2,3,4)结合lambda
func=lambda x,y: x+yprint func(1,2)6、sorted排序
print sorted([41,9,2,8,3,7,21,6,5])#默认对于数据排序 从小到大mylist=[41,9,2,8,3,7,21,6,5]print sorted(mylist) #默认对于数据排序 从大到小排序def revesedsorted(x,y): if x>y: return -1 if x<y: return 1 return 0print sorted(mylist,revesedsorted) # 字典排序mystrlist=['abc','xyz','bsx','Acd']print sorted(mystrlist,revesedsorted)7、字典
Mydict= {"a":1,"b":2,"c":3}for key in Mydict: print keyfor ch in "abcdefg": print chfor x,y in [(1,2),(2,3),(3,4),(4,5)]: print x,yMyList=["a","b","c","d"]for i,value in enumerate(MyList): #枚举索引,值 类似于键值 print i ,value8、列表
Mylist= range(100) #范围 打印0 --100print Mylist #注:取不到最后一个print Mylist[:10] #从0到10print Mylist[10:20] #从10到20 10 -19,取不到20print Mylist[10:30]#从10到30print Mylist[10:30:2] #从10到30,步长2,每两个取一个print Mylist[:]print Mylist[::5] #从0-100,每五个选一个Mytuple=(1,2,3,4,5,6,7)print Mytuple[:3]#从0到3print Mytuple[0:4:2]#从0到4,步长2MyString="abcdefghigklmn"print MyString[:3] #从0到3print MyString[3:13]print MyString[::2]print MyString[::1]print "----------------------"#print MyString[::0] #步长为0,不输出print MyString[::-1]print 99print MyString[::-2] #从结束到开始,每一个取2个print Mylist[::-1] #从结束到开始,每一个取一个
0 0
- Python基础
- Python基础
- Python基础
- Python基础
- python基础
- Python基础
- python基础
- Python基础
- python 基础
- Python 基础
- python基础
- Python基础
- Python基础
- python基础
- Python基础
- python基础
- python基础
- Python基础
- GPLT L2-002. 链表去重【链表】
- Hibernate的查询方式与策略
- UML语言
- JDBC安装时classpath不必理会
- 关于随机数生成问题的新解决方案
- python基础
- Spark-troubleshooting-YARN队列资源不足导致app失效
- 问题:避免销毁session后,浏览器可以返回上一个带数据的页面
- Sublime Text 3 快捷键精华版
- ROS总结——ROS服务和参数
- JAVA虚拟机之创建对象
- 《Understanding the Linux kernel》学习笔记 Chapter 13: I/O Architecture and Device Drivers
- Spark-troubleshooting -JVM GC导致的shuffle文件拉取失败
- C++ 虚函数表解析