5.07—018—周二

今日所学内容

    一、模块

    二、递归删除的思路

    三、案例:跨文件夹移动文件

    四、案例 递归遍历打印目标路径中所有的txt文件

    五、项目开放周期

一、模块

1、与时间相关的模块

  1)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 当前时区的名称         %% %号本身

  2)canendar : 日历

    判断闰年:calendar.isleap(year)

    查看某年某月日历:calendar.month(year, mouth)

    查看某年某月起始星期与当月天数:calendar.monthrange(year, mouth)

    查看某年某月某日是星期几:calendar.weekday(year, month, day)

  3)datatime : 可以运算的时间

    当前时间:datetime.datetime.now()

    昨天:datetime.datetime.now() + datetime.timedelta(days=-1)

    修改时间:datatime_obj.replace([...])

    格式化时间戳:datetime.date.fromtimestamp(timestamp)

2、sys : 系统

  命令行参数List,第一个元素是程序本身路径:sys.argv

  退出程序,exit(0):正常退出时 sys.exit(n)

       exit(1): 非正常退出

       404 : 路径有问题

  获取Python解释程序的版本信息:sys.version

  最大int值:sys.maxsize | sys.maxint

  环境变量:sys.path

  操作系统平台名称:sys.platform

3、OS : 操作系统

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

4、os.path(ntpath) : 系统路径操作

  执行文件的当前路径:  __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)

normcase函数
  在Linux和Mac平台上,该函数会原样返回path,

  在windows平台上会将路径中所有大写字符转换为小写,并将所有斜杠转换为反斜杠。

    >>> os.path.normcase('c:/windows\\system32\\')  

      'c:\\windows\\system32\\'

normpath函数
  规范化路径,如 .. 和 /

    >>> os.path.normpath('c://windows\\System32\\../Temp/')  

      'c:\\windows\\Temp'  不转换大小写会转换 /   但是 .. 会消除它前一个路径

    >>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
    >>> print(os.path.normpath(a))
     /Users/jieli/test1

5、random

(0, 1):random.random(n)    # 0~1 以内的 n 个小数,不包括0和1

random.randint(1, 10)    [1, 10] 整数

random.randrange(1, 10)     [1, 10)/[1, 9] 整数

random.uniform(1, 10)    (1, 10) 内的小数

单例集合随机选择1个:random.choice(item)
单例集合随机选择n个:random.sample(item, n)
洗牌/打乱 单列集合:random.shuffle(item)

 

二、递归删除的思路

 

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

 

三、案例:跨文件夹移动文件

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文件

import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)

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)

五、项目开放周期


1.调研
2.需求分析
3.架构师完成项目demo,完成项目架构
4.分工
5.写代码
6.白盒黑盒测试
7.项目审核发布 => 项目 -> 产品

bin: 可执行文件,入口,入口也可以放在项目根目录下
core: 核心代码
db:数据库相关文件
interface:接口
lib:包、模块、第三方文件夹
log:日志
setting:配置
static:静态文件

 

转载于:https://www.cnblogs.com/Chinesehan/p/10827436.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习模型中step与epoch,batch_size之间的关系

本文主要谈谈自己对step,epoch,batch_size这几个常见参数的理解。 最近在调试模型的时候,发现在使用keras.optimizer.adam时,模型在添加了新的一层2D卷积层后难以收敛,在不调整初始权重矩阵的情况下,想通过…

yml的mybatis的sql查看

yml的mybatis的sql查看 控制台输出结果:

Debian 安装 yum

sudo apt-get updatesudo apt-get install build-essentialsudo apt-get install yum转载于:https://www.cnblogs.com/baiqian/p/10840169.html

unity如何让canvas总是显示在所有层的最上方?

由于unity中的图层都是从上至下渲染的,那么在渲染的过程中,只需要将canvas所在的UI层的渲染优先级order排在其他层之后,就可以保证UI画面总是最后加载出来的了。 在canvas的inspector中修改order in layer 或者 sorting layer都可以实现这一…

FZU - 2037 -Maximum Value Problem(规律题)

Let’s start with a very classical problem. Given an array a[1…n] of positive numbers, if the value of each element in the array is distinct, how to find the maximum element in this array? You may write down the following pseudo code to solve this proble…

解决Feign接口调用有时候不好用的分析思路

很多架构师为了鉴权,会把controller带过来的header信息一股脑的利用feign的拦截器带入RequestTemplate,然后方便feign接口鉴权。这时候可能会带入其他的header信息,比如content-type,而有的feign接口是对特定对header信息有要求的…

关于同时可用git命令clone和TortoiseGit拉取代码不需要密码

工作需要在windows7下使用git分布式版本控制系统,需要同时可以在git命令行模式或TortoiseGit拉取代码而不需要每次输入密码。 这时候需要同时安装git和TortoiseGit。 git使用命令ssh-keygen -C “邮箱地址” -t rsa产生的密钥在TortoiseGit中不能用。TortoiseGit 使…

交叉验证 cross validation 与 K-fold Cross Validation K折叠验证

交叉验证,cross validation是机器学习中非常常见的验证模型鲁棒性的方法。其最主要原理是将数据集的一部分分离出来作为验证集,剩余的用于模型的训练,称为训练集。模型通过训练集来最优化其内部参数权重,再在验证集上检验其表现。…

这个太有意思了,程序员可以消遣娱乐

/***        ┏┓ ┏┓ *       ┏┛┻━━━━━━━┛┻┓ *       ┃       ┃*       ┃   ━   ┃ *       █████━█████ ┃*       ┃       ┃ *       ┃   ┻   ┃* …

第十一周总结

这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/3203 我在这个课程的目标是 理解与使用递归函数。 参考文献 基础题 2-1 宏定义“#define DIV(a, b) a/b”,经DIV(x …

softmax函数与交叉熵损失函数

本文主要介绍了当前机器学习模型中广泛应用的交叉熵损失函数与softmax激励函数。 这个损失函数主要应用于多分类问题,用于衡量预测值与实际值之间的相似程度。 交叉熵损失函数定义如下: LCE(y^,y∗)−∑i1Nclassesyi∗log(yi^)L_{CE}(\hat{y}, y^*) - \sum_{i1}^…

vue配置git的子模块

在vue的模块需要调用许多公共组件,在公共组件之后会需要不断的更新以及分组做,这时候可以利用git的方式更新组件所在位置 [submodule "src/component/common"] path src/component/common urlgit111.111.111.111:projectname/web-common-…

unity如何让物体与特定物体之间不发生碰撞

unity中我们普遍使用的是碰撞器来实现各个物体的碰撞体积,例如Box collider, Sphere Collider。 在实现游戏的过程中,如果不想要物体与特定物体产生碰撞,或反之,只想让碰撞发生在特定物体之间时,我们就需要配置layer …

jenkins的JAVA简单顺序配置git仓库

后台Java的发布配置 1、从源码管理下载项目内容 2、构建触发器 3 、构建下环境 4、构建后处理

SQLyog连接数据库报错plugin caching_sha2_password could not be loaded

打开cmd:mysql -uroot -p 进入mysql依次执行下面语句 ALTER USER rootlocalhost IDENTIFIED BY password PASSWORD EXPIRE NEVER; #修改加密规则 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY password; #更新一下用户的密码 FLUSH PRIVI…

unity导入素材时材质丢失素材变成粉红色的解决方法

有很多时候,当我们通过unity asset store或者blender等等外源导入素材时,会出现材质缺失的bug,如下图所示 : 一个很可能的原因,是由于unity本身管线在每个版本的更新过程中,材质的渲染编码发生了改变。由于这种原因引…

Jenkins 部署vue到服务器

链接github名称 2、从源码管理下载 3、更新最新前端模块 4、进行构建和打包

unity用coroutine并发实现暂停执行程序

废话不多说,下面就用一个简单的显示指引案件的例子来展示如何用coroutine来暂停程序的执行 using System.Collections; using System.Collections.Generic; using UnityEngine;public class TextTriggered : MonoBehaviour {public GameObject TextObject;// Start…

P2690 接苹果

———————————————————————— 我用了记忆化,因为它比DP更好理解 ————————————————————————— 资料:百度百科( MIKU,I Love HER ) 来自洛谷:(背包的题解&am…

gitlab使用git sourcetree时候的命令

6. Git连接设置 MacOS 打开MacOS的 terminal.app 工具。 输入 cat ~/.ssh/id_rsa.pub 确认是否有已经存在的证书。 如果提示存在证书,请跳至 第5步。 输入 ssh-keygen -t rsa -C "your.mobile136.com" -b 4096,并回车,提示的输入…