Python中的一些小知识


1.时间处理

import time
# time.struct_time结构体
time1 = time.localtime()
print(time1)
# 从1970年到现在的秒数
time2 = time.time()
print(time2)
# 从1970年开始往后指定的秒数
time3 = time.localtime(1531274000)
print(time3)

result = time.strftime('%y %m %d %H %M %S',time.localtime())
print(result)
# 线程休眠
# 爬虫:获取对方数据太快,有可能被认为是爬虫程序,所以在爬虫中有时候需要减缓速度
# 线程:a代码块的执行受B代码影响,必须确保B代码先执行并返回数据,这时候就可以让A代码休眠一段时间
#       (注意:休眠不是必须的,也不是最好的)
# 定时任务:需要代码到指定时间是,去执行某个任务,当时间还未到达,可以让程序先休眠
# time.sleep(5)
print('今天是周三,一星期马上过去一半了')

# info = {"code":200,"msg":"成功!","data":[{"createdAt":"2017-11-23T08:32:29.546Z","publishedAt":"2017-11-24T11:08:03.624Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171123083218_5mhRLg_sakura.gun_23_11_2017_8_32_9_312.jpeg"},{"createdAt":"2017-11-20T07:49:41.797Z","publishedAt":"2017-11-20T12:42:06.454Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171120074925_ZXDh6l_joanne_722_20_11_2017_7_49_16_336.jpeg"},{"createdAt":"2017-11-17T10:31:41.155Z","publishedAt":"2017-11-17T12:39:48.189Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/2017-11-17-22794158_128707347832045_9158114204975104000_n.jpg"},{"createdAt":"2017-11-16T11:57:11.4Z","publishedAt":"2017-11-16T12:01:05.619Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171116115656_vnsrab_Screenshot.jpeg"},{"createdAt":"2017-11-14T10:13:21.137Z","publishedAt":"2017-11-14T10:43:36.180Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171114101305_NIAzCK_rakukoo_14_11_2017_10_12_58_703.jpeg"},{"createdAt":"2017-11-13T08:42:35.306Z","publishedAt":"2017-11-13T12:10:58.643Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171113084220_LuJgqv_sakura.gun_13_11_2017_8_42_12_311.jpeg"},{"createdAt":"2017-11-09T09:53:06.802Z","publishedAt":"2017-11-10T08:10:02.838Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171109095254_dOw5qh_bluenamchu_9_11_2017_9_52_47_256.jpeg"},{"createdAt":"2017-11-07T10:02:58.73Z","publishedAt":"2017-11-08T11:00:50.559Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171107100244_0fbENB_yyannwong_7_11_2017_10_2_5_982.jpeg"},{"createdAt":"2017-11-02T09:23:05.497Z","publishedAt":"2017-11-06T12:40:39.976Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171102092251_AY0l4b_alrisaa_2_11_2017_9_22_44_335.jpeg"},{"createdAt":"2017-11-01T14:18:52.937Z","publishedAt":"2017-11-01T14:20:59.209Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171101141835_yQYTXc_enakorin_1_11_2017_14_16_45_351.jpeg"},{"createdAt":"2017-10-31T10:56:55.988Z","publishedAt":"2017-10-31T12:25:55.217Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/2017-10-31-nozomisasaki_official_31_10_2017_10_49_17_24.jpg"},{"createdAt":"2017-10-27T11:40:43.793Z","publishedAt":"2017-10-27T12:02:30.376Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171027114026_v8VFwP_joanne_722_27_10_2017_11_40_17_370.jpeg"},{"createdAt":"2017-10-25T11:30:18.697Z","publishedAt":"2017-10-25T11:39:10.950Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171025112955_lmesMu_katyteiko_25_10_2017_11_29_43_270.jpeg"},{"createdAt":"2017-10-24T08:35:43.61Z","publishedAt":"2017-10-24T11:50:49.1Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171024083526_Hq4gO6_bluenamchu_24_10_2017_8_34_28_246.jpeg"},{"createdAt":"2017-10-23T12:31:32.639Z","publishedAt":"2017-10-23T12:44:23.660Z","type":"美图","url":"https://img.gank.io/anri.kumaki_23_10_2017_12_27_30_151.jpg"},{"createdAt":"2017-10-18T09:14:07.966Z","publishedAt":"2017-10-20T10:26:24.673Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171018091347_Z81Beh_nini.nicky_18_10_2017_9_13_35_727.jpeg"},{"createdAt":"2017-10-12T07:32:28.644Z","publishedAt":"2017-10-17T13:10:43.731Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171012073213_p4H630_joycechu_syc_12_10_2017_7_32_7_433.jpeg"},{"createdAt":"2017-10-12T07:31:27.363Z","publishedAt":"2017-10-16T12:19:20.311Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171012073108_0y12KR_anri.kumaki_12_10_2017_7_30_58_141.jpeg"},{"createdAt":"2017-10-11T08:49:21.485Z","publishedAt":"2017-10-11T12:40:42.545Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171011084856_0YQ0jN_joanne_722_11_10_2017_8_39_5_505.jpeg"},{"createdAt":"2017-10-10T12:38:25.180Z","publishedAt":"2017-10-10T12:41:34.882Z","type":"美图","url":"http://7xi8d6.com1.z0.glb.clouddn.com/2017-10-10-sakura.gun_10_10_2017_12_33_34_751.jpg"}]}
# for循环中  每次从被循环的对象中(info['data'])
# 取出一条数据 (dic)
# 被循环的对象有多少条数据(info['data'])
# 就循环多少次
# for dic in info['data']:
#     print(dic['url'])

import datetime

# data 数据
# date 日期
# 获取现在的日期和时间
date1 = datetime.datetime.now()
print(date1)

date2 = date1.strftime('%Y/%m/%d %H:%M:%S')
print(date2)
date2 = date1.strftime('%Y year %m month %d day %H hour %M minute %S second')
print(date2)
date2 = date1.strftime('%Yyear%mmonth%dday')
# UnicodeEncodeError: 'locale' codec can't encode character
# '\u5e74' in position 2: Illegal byte sequence
# 编码错误:本地文件不能对指定位置的字符进行编码
date2 = date2.replace('year','年').replace('month','月').replace('day','日')
print(date2)

# 怎么获取今天往后推一天的时间
# 可以用来计算过期时间
date4 = datetime.timedelta(days= 1 , hours=12)
date5 = datetime.datetime.now() + date4
print(date5)

date6 = datetime.datetime.now()
# TypeError: Required argument 'year' (pos 1) not found
date7 = date6.date()
print(date7.year , date7.month , date7.day)

date8 = date6.time()
print(date8)

date9 = datetime.datetime.now()
# stamp邮戳
# timestamp 时间戳  时间线
print(date9.timestamp())

2.os.操作

import os
# os operation system
# mas os
# ios iphone os

# os 可以获取本机的基本信息以及  可以对文件及文件夹进行相关操作
# nt 代表windows操作系统
# posix 代表linux操作系统
name=os.name
print(name)
# 获取cpu核数
cpu_count=os.cpu_count()
print(cpu_count)

# 判断是否存在某个文件
# path 路径  exists 存在
# 如果不写路径地址 直接写文件名字那么 默认使用的是相对路径
result=os.path.exists('3.os操作.py')
print(result)
# 绝对路径
result=os.path.exists('C:/Users/Administrator/Desktop/Python资料/7/3.os操作.py')
print(result)
# C:\Users\Administrator\Desktop\Python资料\7
#获取绝对路径

result=os.getcwd()
print(result)

# abs  absolute绝对的
result=os.path.abspath('.')
print(result)
# 获取当前路径的父级路径
result=os.path.abspath('..')
print(result)
# 获取整个地址当中的最后一部分
result=os.path.basename('http://www.baidu.com/music/prettyboy.mp3')
print(result)

result=os.path.basename('C:/Users/Administrator/Desktop/Python资料/7/3.os操作.py')
print(result)
# 地址路径会被/分割成几部分
result=os.path.commonpath(['http://www.jd.com',
                           'http://www.taobao.com',
                           'http://www.baisu.com'])
print(result)
# 返回文件所在的文件夹
# 文档:返回一个文件夹的共有路径
# result=os.path.dirname('1.作业.py')
# print(result)

# 文件夹信息处理----------------------
import time
# get 得到 c  change / create
# 获取文件夹的创建时间
result=os.path.getctime('C:/Users/Administrator/Desktop/合同')
print(result)
# a access 访问时间
result=os.path.getatime('C:/Users/Administrator/Desktop/合同')
print(time.localtime(result))
# modify 修改
result=os.path.getmtime('C:/Users/Administrator/Desktop/合同')
print(time.localtime(result))
# getsize 获取文件大小 获取的大小为字节大小
#  size  大小
#KB
#1TB=1024GB
 #1G=1024M
 #1M=1024K
 #1K=1024B
# 1B=8b
result=os.path.getsize('C:/Users/Administrator/Desktop/合同')
print(result/1024)
# is 是否
result=os.path.isfile('C:/Users/Administrator/Desktop/Python资料/7/3.os操作.py')
print(result)
# split 分割/
# 返回一个元组 由路径和最后的文件名字两部分组成
result=os.path.split('C:/Users/Administrator/Desktop/Python资料/7/3.os操作.py')
print(result)
# splitext
# 返回一个元组 由全部路径和最后的文件后缀两部分组成
result=os.path.splitext('C:/Users/Administrator/Desktop/Python资料/7/3.os操作.py')
print(result)
if os.path.exists('python'):
    os.removedirs('python')
else:
  os.mkdir('python')
if os.path.exists('测试.txt'):
  os.rename('测试.txt','发布.txt')

#   文件读写操作
# 值1:写入的文件,如果有这个文件 就直接写入,没有这个文件就创建
# 值2:对文件操作的方式 w 表示 write 写入
# 值3:文件的编码方式,utf-8方式乱码出现
# f=open('python.txt','w',encoding='utf-8')
# f.write('今天是周三,7月11日,距离毕业还有120天\n')
# # 当文件关闭以后,不能对文件进行任何操作
# f.write('明天是周四,后天是周五,大后天是自习,然后就休息\n')
# f.close()
# # append 追加
f=open('python.txt','a',encoding='utf-8')
f.write('新来的内容')
f.close()

f=open('python.txt','r',encoding='utf-8')
# readlines 将所有的数据放入到一个数组当中
# f.read 将所有的数据放入一个字符串当中
result=f.readlines()
print(result)
f.close()

3.异常处理

# 异常处理:提前将可能引起错误的代码放入到异常块当中
# 一旦发生错误,不会影响后续代码的执行
# list=[1,2,3,4,5,6]
# print(list[100])
# dic={'name':'张三'}
# print(dic['age'])
# try 尝试 试图
try:
    list = [1, 2, 3, 4, 5, 6]
    print(list[100])
    dic = {'name': '张三'}
    # print(dic['age'])
except KeyError as e:
    print('捕获了一个key值错误,请仔细检查key值')
except IndexError as e:
    print('捕获了一个索引值错误,索引值超出界限')
try:
    list=[1,2,3,4]
    print(list[100])

    dic={'name','as'}
    print(dic['age'])
#捕获任意错误 好处是不需要遍历所有的错误类型
# 缺点是:不知道错误是什么类型
except Exception as e:
    print('捕获了一个错误')

# 有可能错误的代码块
try:
    list=[1,23,6]
# 捕获了错误的代码块
except Exception as e:
    print('捕获了一个错误')
# 代码没有产生错误的代码块
else:
    print('没有错误')
# 不过有没有错误 一定会进来的代码块  finally 最终的
finally:
    print('程序结束')

4.函数

# 函数就是方法 非常类似于现实生活中的模板/模具
# 声明方法 def define 定义  test方法名称 ()内部写参数
def test():
    pass
# 无参数无返回值
def firstFun():
    print('this is my first function')
firstFun()
# 有参数无返回值  声明方法时候的参数叫做形式参数,简称形参
# 形参没有具体的值 本身为一个变量
def secondFun(values):
    print('我喜欢{}'.format(values))
    # 调用方法时候的参数 叫做实际参数 简称实参
    # 实际不是变量 而是具体的值
secondFun('吃饭')
# 无参数有返回值
def thirdFun():
    love='爱学习'
    return love
result=thirdFun()
print(result)

def fourFun():
    print('hello')
#return  后面如果没有跟值的话 默认返回None
    # return 只能写在方法里面 不能在方法外面使用
    # 代码执行了return以后  return到方法结束之前
    # 的部分 统统不执行
    return
    for x in range(10):
        break
        continue
    print('world')
fourFun()
print('nice')


# 局部变量和全局变量-----------------------------------------
list=[]
dic={}
name='rgsf '
age=0
fond='1236646'
def partFun():
# 在方法内部声明的变量叫做局部变量
# 只能在方法内部使用
# 出了这个方法变量就释放了
    global fond
    fond='学习'
    print(fond)
    print(name)

partFun()
print(name)

print(fond)



# 有参数有返回值
def fiveFun(a,b):
    return a+b
print(fiveFun(12,15))
# 有多参有返回值
# def sixFun(a,b,c,d,e,f,g):
#     print(a)
#     print(b)
# sixFun('a',0,[1,2,3,4,5,6,7],True,{'name':'张三'},(1,2,3))
#
# 默认参数
def myGirlFriend(name,age,sex=True,born='未知'):
    print('我的女朋友是{},年龄是{},性别是{},出生日期是{}'.format(name,age,sex,born))
myGirlFriend('小玲',100)
myGirlFriend('小王',100,True,'1918年')
myGirlFriend('小黄',100,True)
# 关键参数
def myBoyFriend(name,age,sex=False,born='未知'):
    print('我的男朋友是{},年龄是{},性别是{},出生日期是{}'.format(name,age,sex,born))
myBoyFriend('校长',100)
# 指明给哪一个参数设置值,这种参数叫做关键参数
myBoyFriend('小张',100,born='2000年1月1日')

# *args参数
# argument 参数  **指针的指针
# *args能够将多余的参数统统放入到自己内部
def myArgu(name,*args):
    print(name)
    print(args)
myArgu('张三丰',149,'武当创始人','太极剑,太极拳')

def retManyValue(a,b,c):
    return a,b,c
print(retManyValue(10,11,12))

猜你喜欢

转载自blog.csdn.net/qq_42543314/article/details/81007506