初学python之路-day18

time时间模块

时间戳(timestamp):time.time()
延迟线程的运行:time.sleep(secs)
(指定时间戳下的)当前时区时间:time.localtime([secs])
(指定时间戳下的)格林威治时间:time.gmtime([secs])
(指定时间元组下的)格式化时间:time.strftime(fmt[,tupletime])
%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.time())  # 时间戳,用于数据的唯一标识
# print('开始睡觉')
# # time.sleep(3)  # 1557194569.8574438
#
# # 自定义睡觉
# old_time = time.time()
# while time.time() - old_time <= 3:
#     pass
#
#
# print(time.time())
# print('醒了')


# 当前时区时间
time_obj = time.localtime()
print(time_obj)
print(time_obj.tm_year)

# 格林威治时间
time_obj2 = time.gmtime()
print(time_obj2)
print(time_obj2.tm_hour)
print(time_obj2.tm_wday)  #  星期从周一开始计算,周一为数字0


# 1557294569
print(time.localtime(1557094569))  # 将时间戳转化成时间对象
print(time.gmtime(1557094569))


# 格式化时间
# (2019, 5, 6, 6, 16, 9, 0, 126, 0)
res = time.strftime("%Y-%m-%d %H:%M:%S")
print(res)
res = time.strftime("%Y-%m-%d %H:%M:%S", (2008, 8, 8, 8, 8, 8, 0, 0, 0))
print(res)

datetime模块

当前时间:datetime.datetime.now()
昨天:datetime.datetime.now() + datetime.timedelta(days=-1)
修改时间:datatime_obj.replace([...])
格式化时间戳:datetime.date.fromtimestamp(timestamp)
import datetime

print(datetime.datetime.year)
print(datetime.datetime.day)
now_time = datetime.datetime.now()  # 当前时间
res = str(now_time)
print(res, res[:-7])

days = datetime.timedelta(days=7)  # 7天的时间对象
print(days, type(days))

# 免登陆时间运算 | 会员过期时间
time_obj = now_time + days
print(time_obj, type(time_obj))

new_time_obj = time_obj.replace(year=2000, day=1, second=0)
print(new_time_obj)

print(datetime.date.fromtimestamp(1557094560))  # 2019-05-06

calendar日历模块

判断闰年:calendar.isleap(year)
查看某年某月日历:calendar.month(year, mouth)
查看某年某月起始星期与当月天数:calendar.monthrange(year, mouth)
查看某年某月某日是星期几:calendar.weekday(year, month, day)
import calendar
print(calendar.isleap(2200))
print(calendar.month(2019, 5))
print(calendar.monthrange(2019, 5))
print(calendar.weekday(2019, 5, 7))

sys系统模块

命令行参数List,第一个元素是程序本身路径:sys.argv
退出程序,正常退出时exit(0):sys.exit(n)
获取Python解释程序的版本信息:sys.version
最大int值:sys.maxsize | sys.maxint
环境变量:sys.path ******
操作系统平台名称:sys.platform
import sys
# sys.exit(0)
# aaa
print('哈哈')
print(sys.version)
print(sys.maxsize)
# print(sys.maxint)  # py2 = sys.maxsize
print(sys.platform)
sys.argv
import sys
print(sys.argv)# 应用与自动化脚本
import os.path

def f1():
    print('执行自动化打印方法')

def f2():
    print('执行自动化移动方法')

def copy_file(old, new):
    # print("将%s复制成%s" % (old, new))
    new_file = os.path.join(new, 'new.py')
    with open(old, 'rb') as rf, open(new_file, 'wb') as wf:
        for line in rf:
            wf.write(line)


cmd_map = {
    'print': f1,
    'move': f2
}

if len(sys.argv) > 1:
    cmd = sys.argv[1]
    if cmd in cmd_map:
        cmd_map[cmd]()

if len(sys.argv) == 4:
    if sys.argv[1] == 'copy_file':
        old = sys.argv[2]
        new = sys.argv[3]

        if os.path.isfile(old) and os.path.isdir(new):
            copy_file(old, new)
# sys.argv接受所有py文件作为脚本执行外界传入的参数
# 外界执行传参的方式,cmd中通过python接收器直接执行py文件,python3 py文件 参数们
# sys.argv = [py文件绝对路径, 参数1, ..., 参数n]

os操作系统模块

生成单级目录:os.mkdir('dirname')
生成多层目录:os.makedirs('dirname1/.../dirnamen2')
重命名:os.rename("oldname","newname")
工作目录:os.getcwd()
删除文件:os.romeve('file_path')
删除单层空目录:os.rmdir('dirname')
移除多层空目录:os.removedirs('dirname1/.../dirnamen')
列举目录下所有资源:os.listdir('dirname')
路径分隔符:os.sep
行终止符:os.linesep
文件分隔符:os.pathsep
操作系统名:os.name
操作系统环境变量:os.environ
执行shell脚本:os.system()
import os
print(os.sep, os.linesep, os.pathsep, os.name, os.environ)

# os.mkdir('abc')  # 在当前文件所在路径下创建abc文件夹
# os.mkdir('D:\\abc')  # 就是在指定的绝对路径下创建abc文件夹

# os.mkdir('a/b/c')  # a,b必须提前存在,c不能存在
# os.makedirs(r'a\b\c')  # a,b存在与否都可以,c不能存在

# os.rename("a", "aa")

# print(os.getcwd())

# os.rmdir('aa/b/c')

# os.removedirs('aa/b/c')

# os.remove('aa/bb/1.py')

# print(os.listdir(r'F:\python8期\课堂内容\day18\代码\part4'))

def delete_dir(folder):
    for path in os.listdir(folder):
        # 如果path是文件夹 delete_dir(path)
        # 如果是文件os.remove(path)
        pass
    # for走完了代表folder内部删空了,可以删folder

print(os.system('dir'))

os.path系统路径操作

执行文件的当前路径:__file__
返回path规范化的绝对路径:os.path.abspath(path)  
将path分割成目录和文件名二元组返回:os.path.split(path)  
上一级目录:os.path.dirname(path) 
最后一级名称:os.path.basename(path)
指定路径是否存在:os.path.exists(path)
是否是绝对路径:os.path.isabs(path)
是否是文件:os.path.isfile(path)
是否是路径:os.path.isdir(path) 
路径拼接:os.path.join(path1[, path2[, ...]])
最后存取时间:os.path.getatime(path)
最后修改时间:os.path.getmtime(path)
目标大小:os.path.getsize(path)
import os.path
import os
# 当前执行文件的绝对路径
print(__file__)

# F:\python8期\课堂内容\day18\代码\part5\os_path.py
res = os.path.abspath(r'F:/python8期\课堂内容/day18\\代码\part5\\os_path.py')
print(res)

# ('F:\\python8期\\课堂内容\\day18\\代码\\part5', 'os_path.py')    os_path.py
res = os.path.split(r'F:\python8期\课堂内容\day18\代码\part5\os_path.py')
print(res, res[1])
# print(r'F:\python8期\课堂内容\day18\代码\part5\os_path.py'.rsplit(os.sep, 1))

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

# F:\python8期\课堂内容\day18\代码
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
print(BASE_DIR)  # 该项目根目录是在执行时,自动获取的当前项目根目录的绝对路径


# 案例:项目根目录的应用场景
import sys
sys.path.append(BASE_DIR)  # 所有的导包/导模块都依赖BASE_DIR
print(sys.path)

from part3.abc import new
from part1.x import y
print(new)
print(y)

# from part5 import mm
# print(mm.mmmmm)

# from mm import mmmmm
# print(mmmmm)

# sys.path.append('F:\python8期\课堂内容\day18\代码\part5')
part1_path = os.path.join(BASE_DIR, 'part1')  # => BASE_DIR + os.sep + 'part1'
sys.path.append(part1_path)
part3_path = os.path.join(BASE_DIR, 'part3')
sys.path.append(part3_path)
print(sys.path)

# 最后一级名称:os.path.basename(path)
print(os.path.basename(r'F:\python8期\课堂内容\day18\代码\part5'))

# 路径拼接
new_path = os.path.join(BASE_DIR, 'part3', 'abc', 'new.py')
print(new_path)

"""
指定路径是否存在:os.path.exists(path)
是否是绝对路径:os.path.isabs(path)
是否是文件:os.path.isfile(path)
是否是路径:os.path.isdir(path) 
"""
print(os.path.exists(new_path))  # True
print(os.path.isabs(new_path))  # True

print(os.path.exists('abc'))  # True
print(os.path.isabs('abc'))  # False

print(os.path.isfile(new_path))  # True
print(os.path.isdir(new_path))  # False

print(os.path.isfile('abc'))  # False
print(os.path.isdir('abc'))  # True

# 上传下载文件的进度
# 目标大小:os.path.getsize(path)
print(os.path.getsize(new_path))

# file_path = r'F:\python8期\课堂内容\day18\代码\part5\os_path.py'
file_path = r'F:\python8期\课堂内容\day18\代码\part5\mm.py'
print(os.path.getctime(file_path))
print(os.path.getatime(file_path))
print(os.path.getmtime(file_path))

1557215578.582706
1557215584.565778
1557215578.5837033


print(os.path.normcase('F:\Day18\\代码\part5\mm.py'))

print(os.path.normpath('F:\Day18\\代码\part5\..\..'))

os案例

# 将part5下的mm.py移动到part6下abc文件夹中
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)

"""
def move_file(file, folder):
    if not (os.path.exists(file) and os.path.isfile(file)):
        print('文件不存在或非法')
        return False
    if not os.path.exists(folder):
        os.makedirs(folder)
    file_name = os.path.split(file)[1]
    # file_name = os.path.basename(file)
    new_file = os.path.join(folder, file_name)

    with open(file, 'rb') as rf, open(new_file, 'wb') as wf:
        for line in rf:
            wf.write(line)

    os.remove(file)



file = os.path.join(BASE_DIR, 'part5', 'mm.py')
folder = os.path.join(BASE_DIR, 'part6', 'abc')
move_file(file, folder)
"""


# 遍历打印目标路径中所有的txt文件
def print_txt(folder):
    if not os.path.exists(folder) or os.path.isfile(folder):
        return
    for path in os.listdir(folder):
        file_path = os.path.join(folder, path)
        if os.path.isfile(file_path) and file_path.endswith('.txt'):
            print(path)
        elif os.path.isdir(file_path):
            print_txt(file_path)  # 递归


target_path = os.path.join(BASE_DIR, 'part6', 'target')
print_txt(target_path)

猜你喜欢

转载自www.cnblogs.com/wangwei5979/p/10834948.html