1.import 文件名 或是 from 文件名/文件 import 文件/函数
*先执行文件中的可执行代码
*引入变量
注意:1).Python中可以定义同名函数,但是后者会覆盖前者!
2).import导入文件时,系统会按照指定路径去寻找目标文件。
这里面路径是指:sys.path()返回值是列表,列表元素包含多个路径,系统会按照列表中的元素一个一个寻找,其中列表第一个是执行文件所在的路径,列表后面的元素是内置文件路径。还要注意默认不是寻找同级目录,而是默认去寻找执行文件所在的目录。
3).如果所要导入的文件或是函数目录比较深,文件之间可以用.连接
例如: form file1.file2.file3 import test
*先执行文件中的可执行代码
*引入变量
注意:1).Python中可以定义同名函数,但是后者会覆盖前者!
2).import导入文件时,系统会按照指定路径去寻找目标文件。
这里面路径是指:sys.path()返回值是列表,列表元素包含多个路径,系统会按照列表中的元素一个一个寻找,其中列表第一个是执行文件所在的路径,列表后面的元素是内置文件路径。还要注意默认不是寻找同级目录,而是默认去寻找执行文件所在的目录。
3).如果所要导入的文件或是函数目录比较深,文件之间可以用.连接
例如: form file1.file2.file3 import test
补充:
方式一:
from test import test1
*先执行文件中的可执行代码,再引入变量
*调用test1中的属性或是方法时--->test1.属性/test1.方法
方式二:
module_t= __import__("test.test1")
*不会执行文件中的可执行代码
*上述方法返回值默认是最上一级,即test
*调用test1中的属性或是方法时---> module_t.test1.属性/ module_t.test1.方法
方式三:
import importlib
m=importlib.import_module("test.test1")
*上述方法返回模块默认是字符串最下一级,即test1
*调用test1中的属性或是方法时---> m.属性/ m.方法
2.if __name__==__main__:
注意:如果在执行文件中打印__name__,输出结果是'__main__';如果在被调用文件中打印,则输出被调用的文件名
作用:1):该语句后面可以写测试代码,而当所在文件被调用时,该语句后的测试代码不会被执行,而如果没有
if __name__==__main__:这个语句,则是代码会被执行。
补充:在执行文件中打印__file__,显示的是文件名。如果在PyCharm中打印,其会自动给其加上绝对路径!
3.时间模块:time
*时间戳:time.time() 返回结果是一个浮点数,从1970.1.1凌晨到现在一共经历多少秒。‘
*结构化时间:time.localtime() 返回结果是对象,通过.属性的方式获得年、月、日等相关信息
t ime.gmtime() 返回同上,只是返回的时间是格林尼治的时间(比我们本地时间晚8个小时)
时间戳与结构化时间的转换:
时间戳-->结构化时间 time.localtime(time.time()) 参数可以省略,因为是默认的
结构化时间-->时间戳 time.mktime(time.localtime()) 参数不可省略
*字符串时间:
结构化时间-->字符串时间:time.strftime('%Y-%m-%d %X',time.localtime()) 这里面%X表示具体的年月日,也可以用别的表示
字符串时间-->结构化时间:time.strptime('2018-05-05 16:43:21','%Y-%m-%d %H:%M:%S') 此处的时分秒可以用%X表示
*time.asctime(): 结构化时间-->固定格式的字符串时间
time.ctime():时间戳-->固定格式的字符串时间
*time.sleep(int):睡眠几秒
4.random模块:
*random.random():显示0-1之间的浮点数
*random.uniform(int1,int2):显示int1-int2之间的任意浮点数
*random.randomint(int1,int2):显示[int1,int2]之间的任意整数
*random.randrange(int1,int2):显示[int1,int2)之间的任意整数
*random.choice(序列):随机选取序列中的一个元素
*random.sample(序列,int):随机选取序列中的int个元素
*random.shuffle(序列):打乱序列中元素的顺序
例子:简单的验证码
def code():
code_str=''
for i in range(4):
num=random.randomint(0,9)
#65-122是ASCII的a-z A-Z的码值,chr()把数字按照ASCII规则转换成对应的字符
str1=chr(random.randomint(65,122))
str2=random.choice(num,str1)
code_str+=str2
return code_str
5.os模块:
*getcwd():获得当前的工作目录
*chdir(文件夹):改变当前的工作目录
chdir('..'):返回到当前工作目录的上一层
*pardir():等价于chdir('..')
*makedirs('test1/test2'):生成多层目录
*removedirs('test1/test2'):删除空的文件夹,若test2空,则删除,若删除test2之后,test1变空,则删除test1,类推...
*mkdir()/rmdir():创建/删除单级目录
*remove(str):删除指定文件
*listdir(str):展示路径下文件夹以及文件
*rename(str1,str2):把文件str1改名为str2
*stat(str):返回对象,属性包括文件的大小(字节数),最近访问时间(atime),修改时间(mtime),创建时间(ctime)等
*sep:输出操作系统特定的路径分隔符(windows:\\ linux:/)
linesep:输出当前操作系统的行终止符 (windows:\r\n linux:\n)
pathsep:输出分割文件路径的字符(windows ; Linux :)
*path.abspath(str):获取当前文件的绝对路径
*path.split(path):把文件夹和文件名以二元组的形式返回
*path.dirname(path):返回文件所在的目录
*path.basename(path):返回path下的文件名
*path.exists(path):判断路径是否存在,存在返回True,否则返回False
path.isabs(path):判断路径是否是绝对路径
path.isfile(path):判断路径path对应的是否是文件
path.isdir(path):判断目录是否存在
*path.join(str1,str2):文件的路径的拼接,之前都用+来拼接,那样会额外开辟新空间。推荐join方法
6.sys模块:
*path:以列表的形式返回搜索文件的路径
*exit():退出程序,正常退出是exit(0)
*platform():返回操作系统名称
*argv:
例子:
test1.py:
import sys
print(sys.argv) #获取python命令的参数值,多个参数用空格分开(多个空格视为一个)
Python tes1 abc1 abc2 #Python命令运行test1.py 携带参数abc1,abc2.打印结果是:['test1.py','abc1','abc2]
*类似进度条:
import time.sys
for i in range(100):
sys.stdout.write('*') #等价于print('*')
time.sleep(0.2)
sys.stdout.flush() #刷新缓存;否则会把符号暂存缓冲区,等全部结束之后,再把内容显示出来
7.json模块:
*json.dumps(object):如果对象中有元素是存在单引号包含的,则统一变成双引号,之后再在对象外面加双引号,转变成json字符串。
json字符串是大部分高级语言都认的字符串,本质就是str。
*json.loads(str):把符合json规则的字符串再还原(与eval函数类似,提取str中的数据结构)
注意: dumps与loads不是必须同时使用的。
json字符串:对象里面的元素如果存在str类型的,必须是双引号包含。同时该对象也是字符串类型。(参照dumps方法)
*json.dump()/json.load():仅限文件操作
例:
import json
dic={"name":"pzz"}
f=open("test2","w")
f.write(json.dumps(dic))#等价于json.dump(dic,f) 注意f是必须写的且不变
注意:如果在执行文件中打印__name__,输出结果是'__main__';如果在被调用文件中打印,则输出被调用的文件名
作用:1):该语句后面可以写测试代码,而当所在文件被调用时,该语句后的测试代码不会被执行,而如果没有
if __name__==__main__:这个语句,则是代码会被执行。
补充:在执行文件中打印__file__,显示的是文件名。如果在PyCharm中打印,其会自动给其加上绝对路径!
3.时间模块:time
*时间戳:time.time() 返回结果是一个浮点数,从1970.1.1凌晨到现在一共经历多少秒。‘
*结构化时间:time.localtime() 返回结果是对象,通过.属性的方式获得年、月、日等相关信息
t ime.gmtime() 返回同上,只是返回的时间是格林尼治的时间(比我们本地时间晚8个小时)
时间戳与结构化时间的转换:
时间戳-->结构化时间 time.localtime(time.time()) 参数可以省略,因为是默认的
结构化时间-->时间戳 time.mktime(time.localtime()) 参数不可省略
*字符串时间:
结构化时间-->字符串时间:time.strftime('%Y-%m-%d %X',time.localtime()) 这里面%X表示具体的年月日,也可以用别的表示
字符串时间-->结构化时间:time.strptime('2018-05-05 16:43:21','%Y-%m-%d %H:%M:%S') 此处的时分秒可以用%X表示
*time.asctime(): 结构化时间-->固定格式的字符串时间
time.ctime():时间戳-->固定格式的字符串时间
*time.sleep(int):睡眠几秒
4.random模块:
*random.random():显示0-1之间的浮点数
*random.uniform(int1,int2):显示int1-int2之间的任意浮点数
*random.randomint(int1,int2):显示[int1,int2]之间的任意整数
*random.randrange(int1,int2):显示[int1,int2)之间的任意整数
*random.choice(序列):随机选取序列中的一个元素
*random.sample(序列,int):随机选取序列中的int个元素
*random.shuffle(序列):打乱序列中元素的顺序
例子:简单的验证码
def code():
code_str=''
for i in range(4):
num=random.randomint(0,9)
#65-122是ASCII的a-z A-Z的码值,chr()把数字按照ASCII规则转换成对应的字符
str1=chr(random.randomint(65,122))
str2=random.choice(num,str1)
code_str+=str2
return code_str
5.os模块:
*getcwd():获得当前的工作目录
*chdir(文件夹):改变当前的工作目录
chdir('..'):返回到当前工作目录的上一层
*pardir():等价于chdir('..')
*makedirs('test1/test2'):生成多层目录
*removedirs('test1/test2'):删除空的文件夹,若test2空,则删除,若删除test2之后,test1变空,则删除test1,类推...
*mkdir()/rmdir():创建/删除单级目录
*remove(str):删除指定文件
*listdir(str):展示路径下文件夹以及文件
*rename(str1,str2):把文件str1改名为str2
*stat(str):返回对象,属性包括文件的大小(字节数),最近访问时间(atime),修改时间(mtime),创建时间(ctime)等
*sep:输出操作系统特定的路径分隔符(windows:\\ linux:/)
linesep:输出当前操作系统的行终止符 (windows:\r\n linux:\n)
pathsep:输出分割文件路径的字符(windows ; Linux :)
*path.abspath(str):获取当前文件的绝对路径
*path.split(path):把文件夹和文件名以二元组的形式返回
*path.dirname(path):返回文件所在的目录
*path.basename(path):返回path下的文件名
*path.exists(path):判断路径是否存在,存在返回True,否则返回False
path.isabs(path):判断路径是否是绝对路径
path.isfile(path):判断路径path对应的是否是文件
path.isdir(path):判断目录是否存在
*path.join(str1,str2):文件的路径的拼接,之前都用+来拼接,那样会额外开辟新空间。推荐join方法
6.sys模块:
*path:以列表的形式返回搜索文件的路径
*exit():退出程序,正常退出是exit(0)
*platform():返回操作系统名称
*argv:
例子:
test1.py:
import sys
print(sys.argv) #获取python命令的参数值,多个参数用空格分开(多个空格视为一个)
Python tes1 abc1 abc2 #Python命令运行test1.py 携带参数abc1,abc2.打印结果是:['test1.py','abc1','abc2]
*类似进度条:
import time.sys
for i in range(100):
sys.stdout.write('*') #等价于print('*')
time.sleep(0.2)
sys.stdout.flush() #刷新缓存;否则会把符号暂存缓冲区,等全部结束之后,再把内容显示出来
7.json模块:
*json.dumps(object):如果对象中有元素是存在单引号包含的,则统一变成双引号,之后再在对象外面加双引号,转变成json字符串。
json字符串是大部分高级语言都认的字符串,本质就是str。
*json.loads(str):把符合json规则的字符串再还原(与eval函数类似,提取str中的数据结构)
注意: dumps与loads不是必须同时使用的。
json字符串:对象里面的元素如果存在str类型的,必须是双引号包含。同时该对象也是字符串类型。(参照dumps方法)
*json.dump()/json.load():仅限文件操作
例:
import json
dic={"name":"pzz"}
f=open("test2","w")
f.write(json.dumps(dic))#等价于json.dump(dic,f) 注意f是必须写的且不变
f=open("test2","r")
print(json.loads(f.read()))#等价于print(json.load(f))
8.pickle模块:与上述json的使用一致,只是json把对象包装成str,而pickle把对象包装成字节bytes。
9.shelve模块:类似字典的操作,通过给key赋值value的形式来存数据,通过key获取value的形式来取数据
此模块只有open一个函数。
例子:
import shelve
f=shelve.open(r'test3')
f["name"]={"name1":"pzz1","name2":"pzz2"}
系统会在当前工作目录创建三个文件:test3.bak,test3.dir,test3.dat
f.get("name")["name1"] #打印"pzz1"
10.XML模块:
*查询xml
import xml.etree.ElementTree as ET
tree = ET.parse(xml文件)
root = tree.getroot() #得到xml文件的根节点
#遍历xml
for item1 in root: #for循环的层级取决于xml中标签的层级
for item2 in item1:
#tag:获取标签名;attrib:获取标签的属性与属性值(字典形式);text:获取标签包含的文本内容
print(item2.tag,item2.attrib,item2.text)
#遍历指定标签
for node in root.iter('标签') #获取根节点下指定的标签(标签的个数不唯一),不一定是根节点的儿子,可以是孙子或是更远
print(node.tag,node.attrib,node.text)
*修改xml
for node in root.iter('标签'):
new_text=int(node.text)+1 #注意文本内容都是str类型的。
str(new_text) #修改标签文本
node.set(属性,属性值) #若有该属性,则修改属性值;若没有该属性,则添加属性与属性值
tree.write(xml文件) #这一步很关键,把修改后的节点对象写进xml文件中!
*删除:
for node in root.iter("year"):
if int(node.text)>0 : #简单的逻辑判断
root.remove(node) #注意参数不可以是list,即一次只能删除一个标签
tree.write("xml_lesson")
注意:root.iter(标签) :遍历时打印所有指定标签(打印所有)
root.findall(标签):打印root下的儿子的指定标签(打印下一级)
*添加:
import xml.etree.ElementTree as ET
root=ET.Element("data") #创建根节点
country=ET.SubElement(root,"country",attrib={"name":"pzz1"})
city=ET.SubElement(country,"city",attrib={"name":"pzz2"})
city.text="哈尔滨"
et=ET.ElementTree(root) #生成文档对象
et.write("a.xml",encoding="utf-8",xml_declaration=True
上述代码效果:a.xml:
<data>
<country name="pzz1">
<city name="pzz2">哈尔滨</city>
</country>
</data>
print(json.loads(f.read()))#等价于print(json.load(f))
8.pickle模块:与上述json的使用一致,只是json把对象包装成str,而pickle把对象包装成字节bytes。
9.shelve模块:类似字典的操作,通过给key赋值value的形式来存数据,通过key获取value的形式来取数据
此模块只有open一个函数。
例子:
import shelve
f=shelve.open(r'test3')
f["name"]={"name1":"pzz1","name2":"pzz2"}
系统会在当前工作目录创建三个文件:test3.bak,test3.dir,test3.dat
f.get("name")["name1"] #打印"pzz1"
10.XML模块:
*查询xml
import xml.etree.ElementTree as ET
tree = ET.parse(xml文件)
root = tree.getroot() #得到xml文件的根节点
#遍历xml
for item1 in root: #for循环的层级取决于xml中标签的层级
for item2 in item1:
#tag:获取标签名;attrib:获取标签的属性与属性值(字典形式);text:获取标签包含的文本内容
print(item2.tag,item2.attrib,item2.text)
#遍历指定标签
for node in root.iter('标签') #获取根节点下指定的标签(标签的个数不唯一),不一定是根节点的儿子,可以是孙子或是更远
print(node.tag,node.attrib,node.text)
*修改xml
for node in root.iter('标签'):
new_text=int(node.text)+1 #注意文本内容都是str类型的。
str(new_text) #修改标签文本
node.set(属性,属性值) #若有该属性,则修改属性值;若没有该属性,则添加属性与属性值
tree.write(xml文件) #这一步很关键,把修改后的节点对象写进xml文件中!
*删除:
for node in root.iter("year"):
if int(node.text)>0 : #简单的逻辑判断
root.remove(node) #注意参数不可以是list,即一次只能删除一个标签
tree.write("xml_lesson")
注意:root.iter(标签) :遍历时打印所有指定标签(打印所有)
root.findall(标签):打印root下的儿子的指定标签(打印下一级)
*添加:
import xml.etree.ElementTree as ET
root=ET.Element("data") #创建根节点
country=ET.SubElement(root,"country",attrib={"name":"pzz1"})
city=ET.SubElement(country,"city",attrib={"name":"pzz2"})
city.text="哈尔滨"
et=ET.ElementTree(root) #生成文档对象
et.write("a.xml",encoding="utf-8",xml_declaration=True
上述代码效果:a.xml:
<data>
<country name="pzz1">
<city name="pzz2">哈尔滨</city>
</country>
</data>
Python常用模块详解
本文介绍了Python中的多个常用模块,包括导入文件的方法、时间模块、随机数生成、操作系统交互、系统参数获取、JSON与pickle序列化及XML解析等内容,并提供了丰富的示例代码。
138

被折叠的 条评论
为什么被折叠?



