首页 > 技术文章 > python课程总结day12

liangxiaoying 2021-06-10 20:12 原文

今日内容

os模块

os模块是与操作系统交互的一个接口
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
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命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

import os

# print(os.getcwd())  # pwd

# os.makedirs('a/b/c/d')
# os.rmdir('a/b/c/d')
# os.removedirs('a/b/c/d')
# l = os.listdir(r'D:\py18期\day11')
# print(l)

# print(os.listdir('.'))
# print(os.listdir('..'))
# print(os.listdir('../..'))

# obj=os.stat('a.txt')  # stat a.txt
# print(obj.st_size)
# print(os.sep)
# print(os.linesep)

# print(os.name)


# print(os.environ)

# x = 2222
# def func():
#     # x = 1111
#     print(x)
#
# func()
#
# print(x)

#
# os.environ['username'] = "egon"
#
# print(os.environ)

# print(os.path.abspath(r"a\b\c"))

# print(__file__)

# print(os.path.split(r"D:\a\b\c\d.txt"))
# print(os.path.dirname(os.path.dirname(r"D:\a\b\c\d.txt")))
# print(os.path.basename(r"D:\a\b\c\d.txt"))

# print(os.path.exists(r"D:\py18期\day11\代码\a"))
# print(os.path.exists(r"D:\py18期\day11\代码\a.txt"))
# print(os.path.isfile(r"D:\py18期\day11\代码\a"))
# print(os.path.isfile(r"D:\py18期\day11\代码\a.txt"))
# print(os.path.isdir(r"D:\py18期\day11\代码\a"))
# print(os.path.isdir(r"D:\py18期\day11\代码\a.txt"))

# print(os.path.isabs(r'D:\py18期\day11\代码\a'))

# print(os.path.getsize('a.txt'))
# print(os.path.join('D:\\', "a", 'b', 'c.txt'))
# print(os.path.join('D:\\', "a", "C:\\" 'b', 'c.txt'))


# print(os.path.dirname(os.path.dirname(__file__)))

# res = os.path.normpath(os.path.join(__file__,"..",'..'))
# print(res)

subprocess模块

import os

# tasklist | findstr python.exe
# taskkill /F /PID 30060
# os.system('tasklist | findstr chrome')
# res = os.system('tasklist')
# print('='*50)
# print(res)


import subprocess
import time

obj = subprocess.Popen('tasklist',shell=True,
                 stdout=subprocess.PIPE,
                 stderr=subprocess.PIPE
                 )
# print('hello')
# time.sleep(3)

res1 = obj.stdout.read()
res2 = obj.stderr.read()
print(res1.decode('gbk'))  #subprocess使用当前系统默认编码,得到结果为bytes类型,在windows下需要用gbk解码
print(res2)

补充模块

  • time模块与datetime模块
    时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
    格式化的时间字符串(Format String)
    结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
 
import time

print(time.time())  #时间戳:1623310830.4246492
print(time.strftime("%Y-%m-%d %X"))  #格式化的时间字符串:'2017-02-15 11:40:53'
print(time.localtime())  #本时区的struct_time
print(time.gmtime())  #UTC时区的struct_time

#时间加减
import datetime

print(datetime.datetime.now())  #返回2021-06-10 16:00:37.716175
print(datetime.date.fromtimestamp(time.time()))  #时间戳直接转换成日期格式 2021-06-10
print(datetime.datetime.now())
print(datetime.datetime.now() + datetime.timedelta(3))  #当前时间+3天 2021-06-13 16:05:28.669876
print(datetime.datetime.now() + datetime.timedelta(hours=3))  #当前时间+3小时 2021-06-10 19:07:43.308263
print(datetime.datetime.now() + datetime.timedelta(minutes=30))  #当前时间+30分钟 2021-06-10 16:39:36.724575
  • random模块

    import random
    
    # print(random.random())  #(0,1)----float    大于0且小于1之间的小数
    # print(random.randint(1,3))  #大于等于1且小于等于3之间的整数
    # print(random.randrange(1,3))  #[1,3)    大于等于1且小于3之间的整数
    # print(random.choice([1,'23',[4,5]]))  #1或者23或者[4,5]
    # print(random.sample(['1','23',[4,5]],2))  #列表元素任意2个组合
    # print(random.uniform(1,3))  #大于1小于3的小数,如1.927109612082716
    
    # item=[1,3,5,7,9]
    # random.shuffle(item)  #打乱item的顺序,相当于洗牌
    # print(item)
    
    
    # 随机验证码
    import random
    
    def make_code(n):
        res=''
        for i in range(n):
            s1 = chr(random.randint(65,90))
            s2 = str(random.randint(0,9))
            s3 = chr(random.randint(97,122))
            res += random.choice([s1,s2,s3])
        return res
    print(make_code(6))
    # print(chr(76))  #chr 参照ASCII编码表,把数字转换成对应的字母(中文对应关系)
    # print(ord('A'))  #ord 与chr相反,把字母转换成相对应的数字
    
    
  • sys模块

  • 1. sys.argv           命令行参数List,第一个元素是程序本身路径
    2. sys.exit(n)        退出程序,正常退出时exit(0)
    3. sys.version        获取Python解释程序的版本信息
    4. sys.maxint         最大的Int值
    5. sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    6. sys.platform       返回操作系统平台名称
    
  • shutil模块

  • json模块

  • shelve模块

  • xml模块

  • configparser模块

  • hashlib模块

  • subprocess模块

  • logging模块

  • re模块

推荐阅读