模块与包

python 模块首引用加载到内存,如果再次引用此模块,直接从内存中读取.

python文件分为:执行文件(解释器运行的文件),被引用文件(import)

模块引用一共发生了3件事:

1.他在内存中开辟了以模块名命名的内存空间

2.你模块文件的所有内容都加载到了内存.

3.通过模块名.的方式去引用模块中的对象

为模块起别名:

1,将模块名较长的改为较短的,便于操作

import time as tm
tm.time()

2.拓展代码

from .... import ....   方式引用    #好处:使用方便  缺点:可能与执行稳健的变量名产生冲突  所以不太推荐使用

from time import time               #从from模块引用time()函数
print(time())                         #这样引用可以直接使用time函数,前边不用加time.1546415379.0057561

改名

from time import time as tm
print(tm())1546415633.2531772

__name__

__name__被当做执行文件执行时__name__ 为__main__ ,被引用时 __name__为模块名

执行模块wk

name = 'wk'
def read1():print('tbjx模型', name)
def read2():print('嘻嘻')read1()
print(__name__)__main__

在其他文件引用模块wk

import wkwk

__name__用于调试模块

name = 'wk'def read1():print('tbjx模型', name)def read2():print('嘻嘻')read1()print(__name__)
if __name__ == '__main__':    #如果说执行的是本文件,__name__就是__main__ ,判断后就能调用函数,如果是import调用的__name__就是函数名,不会调用函数read2()

模块的引用顺序

1.先从内存中找

2.内置模块(os,time,sys..)

3.sys.path

程序开发规范

创建一个包里边直接有__init__文件

asd文件里的内容

x = 1

引用aaa包里的asd文件

from aaa import asd
print(asd.x)1

引用aaa包直接执行__init__内的内容

from aaa import asd
print(asd.x)321
1

引用aaa包内的bbb包

bbb的__init__文件

xx = 32

aaa的__init__文件

from aaa import bbb

aaa同级文件引用aaa里的bbb

import aaa
print(aaa.bbb.xx)32

引用bbb里的ddd文件

ddd文件

def fun1():print('bbb里的ddd')

bbb的__init__文件

from aaa.bbb import ddd

aaa的__init__文件

from aaa import bbb

aaa同级的python调用文件

import aaa
aaa.bbb.ddd.fun1()bbb里的ddd

总结:

执行文件的当前目录是在sys.path的第一个参数

所以当前目录的文件可以直接improt

无论怎样导入文件import还是from...import.... 一定是从执行文件当前目录开始

模块的分发

在aa包下有asd 和qwe两个文件4个函数qq ww aa xx

asd文件

def xx():print(1)
def aa():print(2)

qwe

def qq():print(3)
def ww():print(4)

aaa下的__init__文件

from aaa.asd import aa        #在aaa里的asd文件调用aa函数  .只能用在前不能用在import之后
from aaa.asd import xx
from .qwe import ww            #.就是当前路径 当前目录下的qwe文件  ..是上级目录和linux一样
from .qwe import qq

aaa的同级调用文件

import aaa       #在不改变原调用方法的情况下 将相同功能的模块分开为不同的文件
aaa.ww()
aaa.qq()
aaa.aa()
aaa.xx()

4321

re模块

re模块的操作方法:

findall 找全部

search 找到即返回

match 匹配开始

split   按照不同分隔符进行分割

sub  替换

finditer返回一个存放匹配结果的迭代器

单个匹配

\w匹配字母(包含中文)或数字或下划线

import re
ss = 'aasdsadaqw'
print(re.findall('\w',ss))              #一个\w代表一个字符
print(re.findall('\w\w',ss))
print(re.findall('\w\w\w',ss))['a', 'a', 's', 'd', 's', 'a', 'd', 'a', 'q', 'w']
['aa', 'sd', 'sa', 'da', 'qw']
['aas', 'dsa', 'daq']

\W匹配非字母(包含中文)或数字或下划线

import re
ss = 'aa  sds* d#a q!w'
print(re.findall('\W',ss))
print(re.findall('\W\W',ss))
print(re.findall('\W\W\W',ss)) [' ', ' ', '*', ' ', '#', ' ', '!']
['  ', '* ']
[]                   #没有3个连在一起的

\s匹配任意的空白符

import re
ss = 'aa  sds* d#a q!w'
print(re.findall('\s',ss))[' ', ' ', ' ', ' ']

\S匹配任意的非空白符

import re
ss = 'aa  sds* d#a q!w'
print(re.findall('\S',ss))['a', 'a', 's', 'd', 's', '*', 'd', '#', 'a', 'q', '!', 'w']

\d 匹配数字

import re
ss = 'a4a  s132* d#a 1!w'
print(re.findall('\d',ss))['4', '1', '3', '2', '1']

\D匹配非数字

import re
ss = 'a4a  s132* d#a 1!w'
print(re.findall('\D',ss))['a', 'a', ' ', ' ', 's', '*', ' ', 'd', '#', 'a', ' ', '!', 'w']

\A从字符串开头匹配,只匹配开头 \b匹配结尾

import re
ss = 'a4a  s132* d#a 1!w'
print(re.findall(r'\Aa',ss))          #匹配开头字母,如果开头不是所匹配的返回结果为空

['a']

import re
ss = 'a4a  s132* d#a 1!w'
print(re.findall(r'\As',ss))[]

^和\A一样

import re
ss = 'a4a  s132* d#a 1!w'
print(re.findall(r'^a',ss))['a']

\z匹配字符串的结束,如果是换行,只匹配到换行前的结果

\Z匹配字符串的结束

import re
ss = 'a4a  s132* d#a 1!w\n 132131'
print(re.findall(r'131\Z',ss))['131']

$匹配以什么结尾

import re
ss = 'a4a  s132* d\t#a 1!w\n 132131'
print(re.findall(r'131$',ss))['131']

\n匹配一个换行符

import re
ss = 'a4a  s132* d#a 1!w\n 132131'
print(re.findall(r'\n',ss))['\n']

\t匹配一个制表符

import re
ss = 'a4a  s132* d\t#a 1!w\n 13213\t1'
print(re.findall(r'\t',ss))['\t', '\t']

重复匹配

.点代表匹配任意一单个字符,匹配换行符需要加re.DOTALL

import re
ss = 'a2b awb aeqeb aqbada a*b'
print(re.findall('a.b',ss))         #a.b取出以a开头b结尾的3个字符,只能是3个['a2b', 'awb', 'aqb', 'a*b']

import re
ss = 'a2b awb aeqeb aqbada a*b a\nb'
print(re.findall('a.b',ss,re.DOTALL))   #可匹配换行符['a2b', 'awb', 'aqb', 'a*b', 'a\nb']

?问好匹配0个或者1个由左边字符定义的片段

import re
ss = 'abb aab aeqeb aqbada a*b a\nb'
print(re.findall('a?b',ss))   #?匹配左边的0个或1个a 右边是b 期结果为 两种匹配一个为 ab 匹配0个为 b ['ab', 'b', 'ab', 'b', 'b', 'b', 'b']

*匹配0到多个左边的字符

import re
ss = 'abb aab aeqeb aqbada a*b aaaaaab'
print(re.findall('a*b',ss))['ab', 'b', 'aab', 'b', 'b', 'b', 'aaaaaab']

.*匹配任意所有字符

import re
ss = 'abb aab aeqeb aqbada a*b aaaaaab'
print(re.findall('a.*b',ss))['abb aab aeqeb aqbada a*b aaaaaab']

.*? 带限制的匹配 .*匹配任意 ?做限制,匹配到即停止

import re
ss = 'abb aab aeqeb aqbada a*b aabaab'
print(re.findall('a.*b',ss))['ab', 'aab', 'aeqeb', 'aqb', 'ada a*b', 'aab', 'aab']

+匹配一个或多个左边的字符

import re
ss = 'abb aab aeqeb aqbada a*b aabaab'
print(re.findall('a+b',ss))['ab', 'aab', 'aab', 'aab']

{x,y} 匹配x到y个左边字符

import re
ss = 'abb aab aeqeb aqbada a*b aaaaab'
print(re.findall('a{1,3}b',ss))['ab', 'aab', 'aaab']

[ ]代表一个字符

import re
ss = 'asd awd acvd awwd acd'
print(re.findall('a[swc]d',ss))['asd', 'awd', 'acd']

import re
ss = 'asd awd acvd awwd acd'
print(re.findall('a[swc][swc]d',ss))['awwd']

import re
ss = 'asd awd acvd awwd acd'
print(re.findall('a[a-z]d',ss))             #[]中间可以写范围A-Z a-z 0-9['asd', 'awd', 'acd']

import re
ss = 'a-d a/d acvd awwd a*d'
print(re.findall('a[-/*]d',ss))      #匹配- 不能把-放中间['a-d', 'a/d', 'a*d']

import re
ss = 'a1d a2d acvd awwd a*d'
print(re.findall('a[^0-9]d',ss))           #^取反['a*d']

()分组 相当于sed的反向引用

import re
ss = 'asdwk cxdfwk adawk 232wk'
print(re.findall('(.*?)wk',ss))['asd', ' cxdf', ' ada', ' 232']

import re
ss = 'asdwk cxdfwk adawk 232wk'
print(re.findall('(sd|df|ds|da)',ss))['sd', 'df', 'da']

import re
ss = 'asdwk cxdfwk adawk 232wk'
print(re.findall('(cxdf|ada)wk',ss))
['cxdf', 'ada']import re
ss = 'asdwk cxdfwk adawk 232wk'
print(re.findall('(?:cxdf|ada)wk',ss))   #  ?: 取匹配到的分组的所有字符
['cxdfwk', 'adawk']

search 匹配到即返回,没有返回  None

import recc = re.search(r'\d+',"asddas112.adasd243")
print(cc)      #得到的数据必须分组才能显示
print(cc.group()) <_sre.SRE_Match object; span=(6, 9), match='112'>
112

import recc = re.search(r'\d+',"asddas.adasd")
print(cc)         #如果为空返回None
#print(cc.group())           #此时不能分组 分组则报错

None

match 匹配开始

import re
ss = 'asdwk cxdfwk adawk 232wk'
print(re.match('as',ss).group())
print(re.match('as',ss))
print(re.match('aa',ss))    #可用于判断是否适宜某字符串开头

as
<_sre.SRE_Match object; span=(0, 2), match='as'>
None

split按照不同分隔符进行分割

import ress = 'adwk,cxdfwk%adawk|wkggg'
print(re.split(',|%|\|', ss))['adwk', 'cxdfwk', 'adawk', 'wkggg']

sub替换

import ress = '你大哥就是你大哥,你大爷也是你大爷'
print(re.sub('你','我',ss))    #把你替换为我我大哥就是我大哥,我大爷也是我大爷

import ress = '你是傻B'
print(re.sub('(你)(是)(傻)(B)',r'\3\4\2\1', ss))傻B是你

compile 制作一个规则

import re
obj = re.compile('\d{2}')
ss = 'asd323fsgddfgfhgf'
print(obj.findall(ss))['32']

finditer

import ress = 'asd3231212sg11441451gf'
sc = re.finditer('\d',ss)
print(sc)
print(next(sc).group())
print([i.group() for i in sc])<callable_iterator object at 0x000002A0F852A080>
3
['2', '3', '1', '2', '1', '2', '1', '1', '4', '4', '1', '4', '5', '1']

爬虫

分组取值

import re
cc = '<div>电影名:白蛇缘起下载地址:www.baidu.com</div>'
it = re.finditer(r'<div>电影名:(?P<name>.*?)下载地址:(?P<url>.*?)</div>',cc)
print(it)
for i in it:print(i.group('name'))       #通过组的名字获取到数据print(i.group('url'))

爬取电影天堂  海王电影

import re
from urllib.request import urlopen  # 引用urllib 模块# 打开网页获取源代码内容
c = urlopen('https://www.dytt8.net/html/gndy/dyzz/20190126/58116.html').read().decode('gbk')
# 写正则    re.S控制正则中的点,可以匹配换行了
obj = re.compile(r'<div id="Zoom">.*?◎片  名(?P<name>.*?)<br />◎年  代(?P<year>.*?)<br />.*?◎导  演(?P<dy>.*?)<br />.*?<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(?P<xiaz>.*?)"',re.S)
# 匹配网页内容
it = obj.finditer(c)
for i in it:print('电影名:', i.group('name'), '年代:', i.group('year'), '导演:', i.group('dy'), '下载链接:', i.group('xiaz'))电影名:  Aquaman  年代:  2018  导演:  温子仁 James Wan  下载链接: ftp://ygdy8:ygdy8@yg45.dydytt.net:8382/阳光电影www.ygdy8.com.海王.HD.720p.韩版英语中字.mkv

sys模块

sys模块是与python解释器交互的一个接口

import sysprint(sys.argv)     # 命令行参数,第一个元素是程序本身的路径
print(sys.version)  # 查看 python的版本信息
print(sys.path)     # 查看模块的搜索路径,初始化时使用pythonpath环境变量的值
print(sys.platform) # 返回平台操作系统名称
print(sys.exit())   # 退出程序

['F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习/111.py']
3.6.7 (v3.6.7:6ec5cf24b7, Oct 20 2018, 13:35:33) [MSC v.1900 64 bit (AMD64)]
['F:\\python24期\\L007-老男孩教育-Python24期VIP视频-mp4\\练习', 'F:\\python24期', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages']
win32

import sys
print(sys.modules)   #解释器自动加载到内存的额模块与包

{'builtins': <module 'builtins' (built-in)>, 'sys': <module 'sys' (built-in)>, '_frozen_importlib': <module 'importlib._bootstrap' (frozen)>, '_imp': <module '_imp' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_thread': <module '_thread' (built-in)>, '_weakref': <module '_weakref' (built-in)>, '_frozen_importlib_external': <module 'importlib._bootstrap_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, 'winreg': <module 'winreg' (built-in)>, 'zipimport': <module 'zipimport' (built-in)>, 'encodings': <module 'encodings' from 'C:\\Python36\\lib\\encodings\\__init__.py'>, 'codecs': <module 'codecs' from 'C:\\Python36\\lib\\codecs.py'>, '_codecs': <module '_codecs' (built-in)>, 'encodings.aliases': <module 'encodings.aliases' from 'C:\\Python36\\lib\\encodings\\aliases.py'>, 'encodings.utf_8': <module 'encodings.utf_8' from 'C:\\Python36\\lib\\encodings\\utf_8.py'>, '_signal': <module '_signal' (built-in)>, '__main__': <module '__main__' from 'F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习/111.py'>, 'encodings.latin_1': <module 'encodings.latin_1' from 'C:\\Python36\\lib\\encodings\\latin_1.py'>, 'io': <module 'io' from 'C:\\Python36\\lib\\io.py'>, 'abc': <module 'abc' from 'C:\\Python36\\lib\\abc.py'>, '_weakrefset': <module '_weakrefset' from 'C:\\Python36\\lib\\_weakrefset.py'>, 'site': <module 'site' from 'C:\\Python36\\lib\\site.py'>, 'os': <module 'os' from 'C:\\Python36\\lib\\os.py'>, 'errno': <module 'errno' (built-in)>, 'stat': <module 'stat' from 'C:\\Python36\\lib\\stat.py'>, '_stat': <module '_stat' (built-in)>, 'ntpath': <module 'ntpath' from 'C:\\Python36\\lib\\ntpath.py'>, 'genericpath': <module 'genericpath' from 'C:\\Python36\\lib\\genericpath.py'>, 'os.path': <module 'ntpath' from 'C:\\Python36\\lib\\ntpath.py'>, '_collections_abc': <module '_collections_abc' from 'C:\\Python36\\lib\\_collections_abc.py'>, '_sitebuiltins': <module '_sitebuiltins' from 'C:\\Python36\\lib\\_sitebuiltins.py'>, 'sysconfig': <module 'sysconfig' from 'C:\\Python36\\lib\\sysconfig.py'>, '_bootlocale': <module '_bootlocale' from 'C:\\Python36\\lib\\_bootlocale.py'>, '_locale': <module '_locale' (built-in)>, 'encodings.gbk': <module 'encodings.gbk' from 'C:\\Python36\\lib\\encodings\\gbk.py'>, '_codecs_cn': <module '_codecs_cn' (built-in)>, '_multibytecodec': <module '_multibytecodec' (built-in)>, 'types': <module 'types' from 'C:\\Python36\\lib\\types.py'>, 'functools': <module 'functools' from 'C:\\Python36\\lib\\functools.py'>, '_functools': <module '_functools' (built-in)>, 'collections': <module 'collections' from 'C:\\Python36\\lib\\collections\\__init__.py'>, 'operator': <module 'operator' from 'C:\\Python36\\lib\\operator.py'>, '_operator': <module '_operator' (built-in)>, 'keyword': <module 'keyword' from 'C:\\Python36\\lib\\keyword.py'>, 'heapq': <module 'heapq' from 'C:\\Python36\\lib\\heapq.py'>, '_heapq': <module '_heapq' (built-in)>, 'itertools': <module 'itertools' (built-in)>, 'reprlib': <module 'reprlib' from 'C:\\Python36\\lib\\reprlib.py'>, '_collections': <module '_collections' (built-in)>, 'weakref': <module 'weakref' from 'C:\\Python36\\lib\\weakref.py'>, 'collections.abc': <module 'collections.abc' from 'C:\\Python36\\lib\\collections\\abc.py'>, 'importlib': <module 'importlib' from 'C:\\Python36\\lib\\importlib\\__init__.py'>, 'importlib._bootstrap': <module 'importlib._bootstrap' (frozen)>, 'importlib._bootstrap_external': <module 'importlib._bootstrap_external' (frozen)>, 'warnings': <module 'warnings' from 'C:\\Python36\\lib\\warnings.py'>, 'importlib.util': <module 'importlib.util' from 'C:\\Python36\\lib\\importlib\\util.py'>, 'importlib.abc': <module 'importlib.abc' from 'C:\\Python36\\lib\\importlib\\abc.py'>, 'importlib.machinery': <module 'importlib.machinery' from 'C:\\Python36\\lib\\importlib\\machinery.py'>, 'contextlib': <module 'contextlib' from 'C:\\Python36\\lib\\contextlib.py'>, 'mpl_toolkits': <module 'mpl_toolkits' (namespace)>}

通过sys模块给脚本传参

import sys
print(sys.argv[0])                #第0个参数为脚本的绝对路径
# print(sys.argv[1])              #第1个参数
# print(sys.argv[2])              #第2个参数
# print(sys.argv[3])              #第3个参数F:/python24期/python/ceshi.py

引用模块路径

import sys
sys.path.insert(0,'模块路径')  #在环境变量列表里的开头插入,一个路径,再引用该模块 就可以找到该模块了

os模块

路径相关

os.getcwd获取当前工作目录的绝对路径

import os
print(os.getcwd())             #获取当前工作目录的绝对路径

F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习

os.chdir 改变当前脚本的工作目录,相当于shell的cd

import os
os.chdir('bbb')     #切换到bbb目录
print(os.getcwd())   F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习\bbb

os.curdir和os.pardir 返回当前目录和返回上级

import osprint(os.curdir)
print(os.pardir).
..

文件夹相关

os.makedirs 递归创建文件夹

import osos.makedirs('文件夹1/文件夹2/文件夹3/文件夹4')

os.removedirs 递归删除空目录,目录里有文件则不删除

import osos.removedirs('文件夹1/文件夹2/文件夹3/文件夹4')

os.mkdir和rmdir 创建单个文件夹和删除单个空文件夹,如果文件夹非空则报错

import os
os.mkdir('a')
os.rmdir('a')

os.listdir列表出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

import os
print(os.listdir('aaa'))['asd.py', 'qwe.py', '__init__.py', '__pycache__']

和文件相关

os.remove删除一个文件

import os
os.remove('5.dpt')

os.rename重命名一个文件

import os
os.rename('4.dpt', '4.jpg')         #把4.dpt改为4.jpg

os.stat 获取文件或目录的信息

import os
print(os.stat('4.jpg'))os.stat_result(st_mode=33206, st_ino=1125899906853556, st_dev=3560956539, st_nlink=1, st_uid=0, st_gid=0, st_size=614400, st_atime=1546487602, st_mtime=1546487184, st_ctime=1546487602)

import os
print(os.stat('H:\pycham\脚本'))
print(os.stat('H:\pycham\脚本').st_ctime)     #加点获取特定的参数
print(os.stat('H:\pycham\脚本').st_mode)
os.stat_result(st_mode=16895, st_ino=281474976726620, st_dev=597103, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1549081418, st_mtime=1549081418, st_ctime=1548995764)
1548995764.8935523
16895

和操作系统相关

os.sep         输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name       输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

和执行系统命令相关

os.system("bash command") 运行shell命令,直接显示  #执行windows命令会乱码

os.system("ip a")1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:16:3e:2e:cf:16 brd ff:ff:ff:ff:ff:ffinet 172.17.191.14/20 brd 172.17.191.255 scope global dynamic eth0valid_lft 314754627sec preferred_lft 314754627sec

os.popen("bash command).read() 运行shell命令,获取执行结果

os.popen('ip a').read()
'1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1/8 scope host lo\n       valid_lft forever preferred_lft forever\n2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000\n    link/ether 00:16:3e:2e:cf:16 brd ff:ff:ff:ff:ff:ff\n    inet 172.17.191.14/20 brd 172.17.191.255 scope global dynamic eth0\n       valid_lft 314754436sec preferred_lft 314754436sec\n'

os.environ 获取系统环境变量

import os
print(os.environ)

path系列,和路径相关

os.path.abspath() 返回path规范化的绝对路径

import os
print(os.path.abspath('111'))F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习\111

os.path.split(path) 将path分割成目录和文件名    元组返回

import os
print(os.path.split(__file__))             ('F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习', '111.py')

os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素

import os
print(os.path.dirname(__file__))
F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习

import os
print(os.path.dirname(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习\111'))F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习

os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值,即os.path.split(path)的第二个元素

import os
print(os.path.basename(__file__))
111.py

os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False   (path到目录不到文件名)

import os
print(os.path.exists(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习'))True

os.path.isabs(path)  如果path是绝对路径,返回True

import os
print(os.path.isabs(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习'))True

os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False

import os
print(os.path.isfile(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习'))
print(os.path.isfile(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习\111.py'))False
True

os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False

import os
print(os.path.isdir(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习'))
print(os.path.isdir(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习\111.py'))True
False

os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

import os
print(os.path.join(r'F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习','4.jpg'))F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习\4.jpg

os.sep  当前系统的分隔符

import os
print(os.sep)\

os.path.splitext(文件名)[0] 获取不带文件扩展名的文件名

import os
print(os.path.splitext(aaa.html)[0])aaa

time模块

格林威治时间timestamp

import time
print(time.time())1546595718.9566987

格式化时间Format String

import time
print(time.strftime('%Y-%m-%d'))
print(time.strftime("%Y-%m-%d %H-%M-%S"))2019-01-04
2019-01-04 17-58-10

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

import time
print(time.strftime("%Y{}%m{}%d{} %H:%M:%S").format('年', '月', '日'))2019年01月04日 18:01:07

结构化时间struct_time

import time
print(time.localtime())time.struct_time(tm_year=2019, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=2, tm_sec=11, tm_wday=4, tm_yday=4, tm_isdst=0)

索引(Index) 属性(Attribute) 值(Values)
0 tm_year(年) 比如2011
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(时) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 60
6 tm_wday(weekday) 0 - 6(0表示周一)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为0

几种时间格式之间的转化

 

格式化时间Format String ----> 结构化时间struct_time

import time
ft = time.strftime('%Y/%m/%d %H:%M:%S')
st = time.strptime(ft,'%Y/%m/%d %H:%M:%S')
print(st)

结构化时间struct_time ---> 时间戳timestamp

t = time.mktime(st)
print(t)1546596547.0

时间戳timestamp ----> 结构化时间struct_time

import time
t = time.time()
st = time.localtime(t)
print(st)time.struct_time(tm_year=2019, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=10, tm_sec=20, tm_wday=4, tm_yday=4, tm_isdst=0)

结构化时间struct_time  ---> 格式化时间struct_time

ft = time.strftime('%Y/%m/%d %H:%M:%S',st)
print(ft)2019/01/04 18:11:04

转载于:https://www.cnblogs.com/ywrj/p/10211206.html

python笔记6 模块与包 程序开发规范 包 re sys time os模块相关推荐

  1. 模块的使用,包,及程序开发规范

    1.模块的基础认识 为啥使用模块: 从文件级别组织程序,更加方便管理,且实现了功能的重复利用 提高开发效率 查看当前已加载模块: 打印sys.module,里面包含模块名与对象的映射 为模块起别名: ...

  2. 【TgM阅读笔记】《微信小程序开发——从入门到实战》(陈云贵、高旭)

    阅读笔记系列(二) 阅读前言: 速度笔记: 比较起来: 此处摘录前言内容简介同时用以后续文章目录大纲: 阅读前言: 读本书是基于三大前提下的: 了解到其基础设计方式有Java Web程序设计有共同对接 ...

  3. 微信小程序python入门教程-2020Python+微信小程序开发实战(视频+课件)

    本套课程出自老男孩IT教程的Python+微信小程序开发实战官网售价79元,课程基于微信小程序平台开发的的拍卖系统.课程分为4个章节微信小程序快速入门用微信小程序快速开发认证和发布动态模块,第二章拍卖 ...

  4. python是语言还是软件_程序开发语言之Python:是追逐还是坚守?

    Python作为计算机程序设计语言的其中一种,最初是被设计用于编写自动化脚本(shell),随着版本的不断更新.语言新功能的添加和机器学习的兴起,Python从2017年开始受到广泛关注. Pytho ...

  5. python bytes查找位置_Python进阶5---StringIO和BytesIO、路径操作、OS模块、shutil模块

    StringIO StringIO操作 BytesIO BytesIO操作 file-like对象 路径操作 路径操作模块 3.4版本之前:os.path模块 3.4版本开始 建议使用pathlib模 ...

  6. python开发桌面软件-python适合windows的桌面应用程序开发吗?

    谢... 谢特!... (自己跑过来的). 曾经从事过几个桌面应用程序的开发, 来提供些建议 Qt 的 signal-slot 的机制做得很不错, 充分理解以后开发起来很顺手. 早期项目里, 举个栗子 ...

  7. python编程基础张勇答案_Python程序开发、编程基础阶段试题及答案

    1. 下面关于 pycharm 描述错误的是 (B) A . pycharm 用于我们开发 python 程序的集成工具 B. pycharm 不可以打开已有的项目代码 C. 使用 pycharm 运 ...

  8. python第四周测试答案_Python程序开发第四周作业

    1.列表中使用"+"和append()函数的区别?速度如何?写出测试代码. append(): 可添加任何对象,但无论是什么对象,统统算一个元素在列表末尾添加;原地修改列表,不会引 ...

  9. 学习笔记(1):微信小程序开发实战-计算器实战页面布局

    立即学习:https://edu.csdn.net/course/play/3011/49695?utm_source=blogtoedu 20200701晚,学到12min

最新文章

  1. 吴恩达老师深度学习视频课笔记:自然语言处理与词嵌入
  2. 通过练习题学习磁盘知识
  3. 关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet
  4. 《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写
  5. java泛型程序设计——反射和泛型
  6. 德国拜尔集团迎来人工智能专家--李飞飞
  7. Java 初始化 代码块_Java中初始化块详解及实例代码
  8. dns提供商主机名_在 Kubernetes 中使用 DNS 和 Headless Service 发现运行中的 Pod
  9. first-class type 一等类型的含义
  10. servlet路径跳转
  11. 【trie树】HDU1251统计难题
  12. timimg学习数据删了_如何评价Timing这个督促人学习的软件?
  13. Markdown笔记简明教程
  14. 车辆销售系统用例_汽车销售管理系统UML建模分析.doc
  15. 计算机说课教案模板,初中信息技术说课稿通用模板大全
  16. Unity Driven 属性(代码控制属性)使用示例
  17. 高斯日记python实现
  18. Python每天练习——小程序006
  19. Windows10_如何修改用户文件夹下的中文用户文件夹名
  20. 【Java应用】使用Java实现机器学习算法:聚类、分类、预测

热门文章

  1. 利用dom4j将实体类转换为对应的xml报文
  2. VSCode 安装 Go 插件、gopls 是个什么东东
  3. VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件
  4. 如何利用python的newspaper包快速爬取网页数据
  5. 大三Java后端暑期实习面经总结——Java容器篇
  6. 单周期十条指令CPU设计与verilog实现(Modelsim)
  7. Qt实现 指针式时钟+动态时钟 (详细注释)
  8. 硬件安全模块如何启用AUTOSAR
  9. CUDA运行时 Runtime(二)
  10. Ubuntu 系统 查看代码的方法在那些地方使用