Python 模块

模块(module)

脚本:把代码写进文件,不在直接写在python解释器中

一个脚本,在python中就是一个.py文件

假设现在.py中有三块代码:

打印9*9乘法表

打印菱形

打印梯形

...

这个代码有五千行,100多个功能

另一个.py文件,要用到上一个py中菱形这个块代码

模块:一个.py文件就是一个模板

为了重复代码的优化,python提出了引用模块

引入模块

import:导入,进口

1.import module_name

import diamond_module    # =>python diamond module.py
import tarpezium_module

2.from module_name import class/funcition/variable(可以导入多个)

form packsge import module

module.py
from diamond_module import data
from diamond_module import data2

diamond_module.py
print("打印菱形")
data = "菱形"
data2 = "菱形2"

3.from module_name variable1, variable2

4.from package import *

module.py
from tarpezium_module import *
print(name1)
print(name2)

trapezium_module.py
name1 = ("zhangsan")
name2 = ("lisi")

as :重命名

from tarpezium_module import as b, name2 #就会把name2的值转化为b

--name--(-是下划线,这个文本有问题) 值为模块名称,但是如果主模块(主程序)的时候值是“--main--”;如果不是主模块时,=模块名

module.py
from diamond_module import data as d, data2
print(__name__)

diamond_module.py
print("打印菱形")
print("*" * 80)
print(__name__)
print("*" * 80)

'''
结果:
(1)在module.py中运行
打印菱形
********************************************************************************
diamond_module
********************************************************************************
__main__
(2)在diamond.py中运行
打印菱形
********************************************************************************
__main__
********************************************************************************
'''

在diamond_module中实现;

if __name__ == '__main__':
    print("i am a king")

模块搜索路径

os:operation system 操作系统

sys:system系统

random:随机数

re:正则表达式

math:和数字相关

导入 spam模块中,解释器首先查找名为 spam的内置模块;如果没找到,解释器再从 sys.pat变量中的目录里列表里查找samp.py

注:在模块齐名的时候,不要和python解释器内部名称重名

1.没找到的情况下

import sys

print(sys.path)

有搜索顺序:

['D:\pycharm1\PyCharm 2019.3', 'D:\pycharm1\PyCharm 2019.3', 'D:\pycharm1\PyCharm 2019.3\plugins\python\helpers\pycharm_display', 'D:\python\python39.zip', 'D:\python\DLLs', 'D:\python\lib', 'D:\python', 'D:\python\lib\site-packages', 'D:\pycharm1\PyCharm 2019.3\plugins\python\helpers\pycharm_matplotlib_backend']

2.找到的情况

module.py
import test
print(test.data)

test.py
print("My OS")
data = "20210906"

'''
结果:
My OS
20210906
'''

注:不要和python的.py内置文件重名

常用函数:

"""

sys

os

random

json

time

math

re

"""

import time
​
# form time import time
​
# from time import *
​
# time.ctime()
​
# time.sleep()
​
# time.strftime()
​
print(time.time())  # 当前时间和元年之间的间隔时间 =》1970年1月1日
​
# 1636110023.6204143
​
print(time.ctime())
print(time.ctime(1636110023.6204143))  # 可以转换到元年的计算时间
time.sleep(0)  # 可以暂停
print("sleeping")
time.strftime("")
​
# yyyy-mm-dd hh:mm:ss
​
# 20201-10-06 13:31:23

时间的应用:

""" %a 本地化的缩写星期中每日的名称。

%A 本地化的星期中每日的完整名称。

%b 本地化的月缩写名称。

%B 本地化的月完整名称。

%c 本地化的适当日期和时间表示。

%d 十进制数 [01,31] 表示的月中日。

%H 十进制数 [00,23] 表示的小时(24小时制)。

%I 十进制数 [01,12] 表示的小时(12小时制)。

%j 十进制数 [001,366] 表示的年中日。

%m 十进制数 [01,12] 表示的月。

%M 十进制数 [00,59] 表示的分钟。

%p 本地化的 AM 或 PM 。

%S 十进制数 [00,61] 表示的秒。由于历史原因支持61

%U 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)。 在第一个星期日之前的新年中的所有日子都被认为是在第 0 周。

%w 十进制数 [0(星期日),6] 表示的周中日。

%W 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)。 在第一个星期一之前的新年中的所有日子被认为是在第 0 周。

%x 本地化的适当日期表示。

%X 本地化的适当时间表示。

%y 十进制数 [00,99] 表示的没有世纪的年份。

%Y 十进制数表示的带世纪的年份。

%z 时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中H表示十进制小时数字,M表示小数分钟数字 [-23:59, +23:59] 。

%Z 时区名称(如果不存在时区,则不包含字符)。

%% 字面的 '%' 字符。 """

# strftime(format, p_tuple=None)
​
print(time.timezone)
​
# getime():标准时间 格林威治时间
​
print(time.strftime("%Y-%m-%d %H-%M-%S %A %j %p %U %w", time.gmtime((1636110023.6204143))))
print(time.strftime("%Y-%m-%d %H-%M-%S %A %j %p %U %w", time.localtime((1636110023.6204143))))
print(time.gmtime(1636110023.6204143))   # 把时间切开

""" json:现在在我们web层面用的最多的传输数据的形式 xml,json json模块的模式: 将Python对象转换成json格式的字母 将json格式的字符串转换成python对象 """

import json
​
dict_data = {"username": "zhangsan", "passward": "123456"}
data = json.dumps(dict_data)   # 将python对象转换成json
print(data, type(data))
dict_data = json.loads(data)   # 将json转换成obj
print(dict_data, type(dict_data))
​
list_data = [1, 2, 3]
data = json.dumps(list_data)
print(data, type(data))
list_data = json.loads(data)
print(list_data, type(list_data))

""" 产生随机数 0-1的随机数;随机整数;取样; 随机抽取 random : 取得是0-1之间的随机数 randint : 随机整数, 需要的是范围 choice : 取样

"""

import random
num = random.random()
print(num)
print(int(num * 100))
​
num = random.randint(1, 100)
print(num)
​
list_data = [1, 2, 3, 4, 5, 6, 7]
print(random.choice(list_data))
print(random.choices(list_data, k=2))
print(random.sample(list_data, k=2, counts=[1, 2, 3, 4, 5, 6, 7]))
data = random.sample([1, 4, 6, 7, 9], k=2, counts=[3, 2, 1, 3, 1])
print(data)
​
list_data = [1, 2, 3, 4, 5]
print(random.choices(list_data, k=2, weights=[0, 2, 5, 10, 15]))

""" os => operation system os 模块是Python解释器提供给操作系统的接口给用户

"""

import os
print(os.curdir)
​
# 当前工作路径
​
print(os.environ)
​
# environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\一只傲娇的小莹莹\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'LAPTOP-SSB3VCQ9', 'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\一只傲娇的小莹莹', 'IDEA_INITIAL_DIRECTORY': 'C:\\Users\\一只傲娇的小莹莹\\Desktop', 'LOCALAPPDATA': 'C:\\Users\\一只傲娇的小莹莹\\AppData\\Local', 'LOGONSERVER': '\\\\LAPTOP-SSB3VCQ9', 'NUMBER_OF_PROCESSORS': '8', 'ONEDRIVE': 'C:\\Users\\一只傲娇的小莹莹\\OneDrive', 'ONEDRIVECONSUMER': 'C:\\Users\\一只傲娇的小莹莹\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'D:\\python\\Scripts\\;D:\\python\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Users\\一只傲娇的小莹莹\\AppData\\Local\\Microsoft\\WindowsApps;;D:\\pycharm1\\PyCharm 2019.3\\bin;', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 12, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8e0c', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM': 'D:\\pycharm1\\PyCharm 2019.3\\bin;', 'PYCHARM_DISPLAY_PORT': '63342', 'PYCHARM_HOSTED': '1', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'D:\\pycharm1\\PyCharm 2019.3;D:\\pycharm1\\PyCharm 2019.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend;D:\\pycharm1\\PyCharm 2019.3\\plugins\\python\\helpers\\pycharm_display', 'PYTHONUNBUFFERED': '1', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\WINDOWS', 'TEMP': 'C:\\Users\\一只傲~1\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\一只傲~1\\AppData\\Local\\Temp', 'USERDOMAIN': 'LAPTOP-SSB3VCQ9', 'USERDOMAIN_ROAMINGPROFILE': 'LAPTOP-SSB3VCQ9', 'USERNAME': '一只傲娇的小莹莹', 'USERPROFILE': 'C:\\Users\\一只傲娇的小莹莹', 'WINDIR': 'C:\\WINDOWS', 'ZES_ENABLE_SYSMAN': '1'})
​
print(os.name)
​
# NT
​
print(os.cpu_count())
​
# cpu逻辑处理器
​
print(os.getcwd())
print(os.path)
​
# 获取当前工作目录

1.切目录

os.chdir("D:\\test")
print(os.curdir)
print(os.path.abspath(os.curdir))

2.获取当前文件夹下的所有文件和文件夹

访问及列出当前文件里面的东西

print(os.listdir(os.curdir))

3.我去访问:如果是问津我去打印,如果是文件夹先打印然后去访问

4.打印,继续操作:列出嵌套的文件中的文件或文件夹。。。

def list_all_files(path, sep=0):

切换目录

    # os.curdir("D:\\test")
​
    # os.listdir(path)
​
    # print(os.path.abspath(os.curdir))

如果是文件,直接打印,文件必须是完整路径才可以访问到

需要拼接路径

# os.path.join()
​
for sub_path in os.listdir(path):
   if os.path.isfile(os.path.join(path, sub_path)):   # 绝对路径
•     print(sep * "\t", sub_path)
•     pass
•     if os.path.isdir(os.path.join(path, sub_path)):
•        print(sep * "\t", sub_path)
•        list_all_files(os.path.join(path, sub_path), sep=sep + 1)

如果是文件夹先打印在继续访问

list_all_files("D:\\test")
​
​
"""
sys
"""
import sys
print(sys.platform)             # Windows版本
print(sys.version)           # Python解释器版本
print(sys.path)       # 模块搜索路径  内置模块+工作目录+Python解释器
print(sys.modules)            # 当前目录包含的模块

practise:递归访问目录:且目录中嵌套目录,有层次的列出给定目录中所有的文件和文件夹

切换目录:os.chdir(path)

判断是否为目录:os.path.isfile(path)

判断是否是目录:os.path.isdir(path)

拼接路径:os.path.join(path1,path2..)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值