找回密码
 立即注册
首页 业界区 安全 模块
喙审 5 天前
模块:  定义模块时可以把一个py文件或者一个文件夹(包)称为模块,
      包:里面得有__init__.py 文件
  模块的导入:
      1:   执行的脚本和所需导入的模块在同一目录下时,且需要模块里的很多功能:  import  模块 (as 别名)       模块.函数() 
      2:     from 模块 import  模块 (as 别名)      模块.函数()
      3:   from 模块.模块 import 函数    函数()
__file__为执行脚本时后面的参数,可能给你的是相对路径或绝对路径     具体情况看在终端python解释器后面的路径名(参数),这里通过 os.path.abspath(__file__)将其统一转换为绝对路径
   脚本运行查找的路径(相对路径):
      1.若不写绝对路径(即使用相对路径),Python 会默认从脚本运行时的“当前工作目录” 开始查找文件。

D:/project/
├─ my_script.py  (你的压缩脚本)
└─ data/
   └─ target.txt  (待压缩的文件)
 
 
- 若在  D:/project/  目录下运行  my_script.py ,脚本中用  data/target.txt  这种相对路径,就能找到文件(因为当前工作目录是  D:/project/ )。
 
- 若在  D:/  目录下运行  my_script.py (比如执行  python project/my_script.py,  此时_ _file_ _为  project/my_script.py),再用  data/target.txt  就会找不到文件(此时当前工作目录是  D:/ ,而非  D:/project/ ),即便  sys.path  包含  D:/project/  也没用。
1.png

 
 
 
sys模块:
    sys.exit(0) :  结束脚本
    sys.argv() :   获取用户输入的参数  以列表存储,sys.argx[0]为脚本文件
  1. import sys
  2. if len(sys.argv) < 2:
  3.     print("参数不够")
  4.     exit(0)
  5. print(sys.argv[1])
复制代码
2.png

    sys.path  :   默认脚本导入模块时,按照sys.path中的路径取查找相应的模块(环境变量)
          返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
3.png
  1. import sys
  2. for i in sys.path:
  3.     print(i)
  4. #导入模块时,按照这里面的路径去找
  5. """
  6. d:\test\file1
  7. D:\Python37\python37.zip
  8. D:\Python37\DLLs
  9. D:\Python37\lib
  10. D:\Python37
  11. D:\Python37\lib\site-packages
  12. """
  13. ##情况1:   导入test文件夹下面file1文件夹中file_test1文件夹中的a.py模块
  14.     #由于sys.path中有 d:\test\file1 路径则导入时可以继续按这个路径继续往下找到file_tset1文件中的a.py模块
  15. #方法一:
  16. import file1_test1.a
  17. #方法二:
  18. from file1_test1 import a
  19. #方法三:(导入模块中某个函数
  20. from file1_test1.a import func
  21. ##情况2:   导入test文件夹下面file2中test2.py模块
  22.     #由于file2在test文件夹下,且sys.path中没有D:\test,所以要在sys.path中添加环境变量去找到file2
  23. #第一步:由于file2和运行的脚本在同一test文件中所以得获取当前脚本的绝对路径,得到其共同的目录
  24. import os
  25. a = os.path.dirname(os.path.abspath(__file__)) #得到D:\test        __file__当前脚本的路劲,可能给到的是绝对路径或相对路径
  26. sys.path.append(a)#将此路径添加到sys.path中,以便找到模块
  27. #第二步:导入模块
  28. #方法一:(将file2中test2.py模块全导入
  29. import file2.test2
  30. from file2 import test2
  31. #方法二:(导入个别函数
  32. from file2.test2 import func2
复制代码
 
 
shutil模块:  用于高级的文件操作和目录处理
    shutil.rmtree(path)  :    path得是其绝对路径  递归删除整个文件目录,不可以是文件(删除单个文件用os.remove)
  1. #删除整个目录脚本
  2. import sys,shutil
  3. def get_file_path(path):
  4.     file_path = sys.argv[1]
  5.     shutil.rmtree(file_path)
  6. ######
  7. import shutil
  8. shutil.rmtree(r'D:\guohan\code\模块\fsa')
复制代码
    shutil.move():重命名并移动(优先于os.rename)      不仅可以重命名还可以移动位置,  要重命名的文件路径得指明(不和脚本在同一目录下时)  重命名后的文件路径也得指明  不然会添加到脚本所在的目录下,指明了路径即使不和脚本在同一目录也能找到并重命名和移动位置
  1. import shutil
  2. shutil.move(r'D:\guohan\code\函数','hanshu')
复制代码
 
4.png
  1. import shutil
  2. shutil.move(r'D:\guohan\code\模块\hanshu',r'D:\guohan\code\函数')
  3. ##文件路径写全不然还是只改在模块下
复制代码
5.png
 
     shutil.make_archive:   压缩文件  格式:shutil.make_archive(要压缩后的名字(可以含路径指定去哪,不然压缩到脚本所在目录),压缩包格式(如zip),要压缩的文件(指定绝对路径,以找到))
6.png

    shutil.unpack_archive:  解压文件  格式:shutil.unpack_archive(要解压包的名字(同样的有路径,因为先从sys,path里面找,没有则报错), 要解压的路径(若没有该文件夹自动创建),压缩包的格式)
7.png

8.png

 
 
 
random模块:
    random.randint(a,d)  :  生成[a,b]间的整数
  1. #随机验证码
  2. import random
  3. none_list = []
  4. for i in range(6):
  5.     data = random.randint(65,90)
  6.     none_list.append(chr(data))
  7. print("".join(none_list))
复制代码
 
 
 
getpass模块:
    getpass.getpass() :  密码不显示
  1. #密码不显示
  2. import getpass
  3. pwd = getpass.getpass('输入密码:')
  4. print(pwd)
复制代码
9.png

 
 
 
hashlib模块:
    hashlib。md5() :  md5密码加密
  1. #md5密码加密
  2. import hashlib
  3. def md5_pwd(pwd):
  4.     #加盐
  5.     obj = hashlib.md5('hkhsdkfhjksdh'.encode('utf-8')) #将字符串以utf-8编码进行压缩(二进制->为字节)
  6.     obj.update(pwd.encode('utf-8')) #将密码以utf-8编码进行压缩后加到所加的盐后面进行加密
  7.     data = obj.hexdigest()  #将加密的obj(二进制形式)转成字符串
  8.     return data
  9. num = input("输入密码:")
  10. print(md5_pwd(num))
复制代码
 
 
 
os模块:
    1.os.stst(file).st_size:  读取文件大小
10.png

    2.os.path.exists(path):  判断路径是否存在 存在返回True  不存在返回False
11.png

    3.os.path.abspath():  获取绝对路径,其不关心文件是否存在直接将文件拼接到脚本运行目录后  ,代表脚本运行的目录(即正处目录)  ..代表上级目录
12.png

    4.os.path.dirname():  获取路径的上一级目录名
13.png

    5.os.path.join():  对路径进行拼接
    6.os.listdir(path):  查看该目录下第一层文件
14.png

    7。os.walk(path):  查案看该目录所有层的所有文件    会生成一个生成器得循环去查看  a 为查看的目录    b 为此目录下的文件夹    c为此目录下的文件
15.png

    8.os.makedirs():  创建目录和子目录
16.png

    9.os.remove():   删除单个文件
17.png

    10.os.rename():    重命名
18.png

 
 
 
json,pickle模块:  json是数据交换的格式,所有语言通用,是一种特殊的字符串,所有语言都认识的格式
             pickle只有python用
        json格式字符串最外层只能是[...]或者{...}   里面则是被序列化的对象若里面有字符串则必须是”“
        pickle格式为二进制的字节流
        序列化:python对象(除集合)——>json格式,pickle格式  dumps/dump      json.dumps->str   pickle.dumps->bytes
        反序列化:json格式——>python对象    loads/load
          注意:python中集合不可以转换成json格式
             python中元组转成json格式为[...]        反序列化时由于json里面没有元组所以得到的python对象没有元组
             pthon对象中含有中文序列化时得有json.dumps(v,ensure_ascii=False)
  1. ####序列化
  2. import json
  3. v = [1,'guohan','郭晗',(2,3),{'4':5}]
  4. v1 = json.dumps(v)
  5. print(v1)
  6. >>>[1, "guohan", "\u90ed\u6657", [2, 3], {"4": 5}]
  7. import json
  8. v = [1,'guohan','郭晗',(2,3),{'4':5}]
  9. print(v,type(v))
  10. v1 = json.dumps(v,ensure_ascii = False)
  11. print(v1,type(v1))
  12. >>>
  13. [1, 'guohan', '郭晗', (2, 3), {'4': 5}] <class 'list'>
  14. [1, "guohan", "郭晗", [2, 3], {"4": 5}] <class 'str'>
复制代码
  1. import json
  2. v = '[1,"guohan","郭晗",[2,3],{"4":5}]'  ##json 格式的字符串
  3. print(v,type(v))
  4. v1 = json.loads(v)
  5. print(v1,type(v1))
  6. >>>
  7. [1,"guohan","郭晗",[2,3],{"4":5}] <class 'str'>
  8. [1, 'guohan', '郭晗', [2, 3], {'4': 5}] <class 'list'>
复制代码
 
 
 
time模块:
    1.time.time():   时间戳
    2.time.sleep():  程序暂停的秒数
  1. import time
  2. def wrapper(param):
  3.     def inner(*a,**kwa):
  4.         v1 = time.time()
  5.         for i in range(3):
  6.             time.sleep(2)
  7.             print(i)
  8.         param(*a,**kwa)
  9.         v2 = time.time()
  10.         print(v2-v1)
  11.     return inner
  12. @wrapper
  13. def func():
  14.     print("func函数")
  15. func()
  16. >>>
  17. 0
  18. 1
  19. 2
  20. func函数
  21. 6.014153003692627
复制代码
      3.time.strftime('%Y-%m-%d'):  格式化的字符串
  1. import time
  2. a = time.strftime('%Y-%m-%d')
  3. print(a)
  4. >>>2025-10-06
复制代码
 
 
 
 
datetime模块:
    1.datetime.now():  获取当地时间(datatime类型)      >>>2025-10-06 18:39:28.716035
    2.datetime.utcnow():  获取世界时间
 
 
sttr time datetime 三者转换关系:      datetime 为中间枢纽 其可以进行时间的加减
    datetime时间加减:
  1. #将字符串转换为datetime时间        
  2. from datetime import datetime, timedelta
  3. v = datetime.strptime('2025-10-6','%Y-%m-%d')
  4. ##datetime时间加减        timedelta
  5. v1 = v + timedelta(days=4)
  6. print(v1)
复制代码
    
    三者转换关系:
 
19.png

 
 
 异常处理:           
  1. 试运行try缩进的语句,若出错,运行except Exception as e:后面的语句,避免程序出错
复制代码
    格式:      try:
               pass
             except Exception as e:
               pass
 
 
20.png

i.isdecimal()即使不是数字都能进行判断所以不会触发except
 
 
21.png

content不能进行strip,异常被except捕获执行print(‘失误”)  则不飘红
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册