Python基础-day18-模块



import time print(time.time()) print(time.strftime('%Y-%m-%d-%H-%M-%S %a')) print(time.strftime('%X'))
1573196824.8292189
2019-11-08-15-07-04 Fri
15:07:04

print(time.localtime())
打印:
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=8, tm_hour=15, tm_min=10, tm_sec=35, tm_wday=4, tm_yday=312, tm_isdst=0)
localtime()函数接收一个参数,这个参数是秒。当我们传入秒后,它会自动解析成一个含有9个元素的元祖。 这个元祖表示了对应的时间。
如果不传,就以当前的时间戳作为参数;如果传入了,就解析我们传入的时间戳。
tm_year 年
tm_mon 月
tm_mday 日(本月第几天)
tm_hour 时
tm_min 分
tm_sec 秒
tm_wday (一周的第几日,从0-6,0表示周一)
tm_yday 本年的第几天
tm_isdst是否为夏令时(值为0的时候表示非夏令时;值为1的时候表示是夏令时;值为-1的时候表示不确定是否是夏令时)
DST 是daylight saving time, 意思是:夏令时。

访问具体的值。
所以区别时间的三种格式很重要。
时间戳形式的时间:time.time()
格式化形式的时间:time.strftime()
struct_time形式的时间:time.localtime()或time.gmtime()
下图是三种格式的相互转化关系图。
struct_time是作为中间桥梁,在关联着format string和timestamp。

time.localtime(sec),返回time.struct_time(),是一个元祖。
time.gmtime(sec),返回time.struct_time(),是一个元祖,只不过是UTC时区的。
time.mktime(tuple),返回floating point number。
time.strftime(format[, tuple]),返回string。
time.strptime(string, format) ,返回struct_time。
time.asctime([tuple]),将一个时间元祖转化为string。
time.ctime(seconds),将一个时间戳转化为string。
这7种方式,在上面的图中都解释了关系。
我们在实际使用方法时,pycharm是会提示参数类型的,比如localtime需要传递秒,mktime需要传递tuple,这样我们一看就能知道了。

random.random() 返回的数字在 [0, 1)的范围内。左包右开。
random.uniform(a, b),返回的浮点数字在[a, b)或[a, b]的范围内,右边是否关闭是根据四舍五入的规则来。但目前[a, b]这种情况没有通过,只看到[a, b)。
random.randint(a, b),返回整数,包含a和b,也就是大于等于a,小于等于b。
random.randrange(start, stop, step)
首先根据start, stop, step,将我们的范围挑选出来。比如上面的[1, 10, 2],从1开始,到10结束。含1不含10,步长为2,则得出的结果为[1, 3, 5, 7, 9]。
最后在这个结果中随机挑选一个。
random.choice([a, b, c, d]),从列表中随意选出一个。
random.sample([a, b, c, d], 2),从列表中随机挑选2个元素,组成新的列表,然后返回。组成的新列表可能为[a, c],也可能为[d, b],也就是先后无序。
打乱顺序,就是洗牌。

很抱歉,图中的写法错了,curdir是一个属性,不是一个方法,所以不能加(),会报错。print(os.curdir),返回的是 '.',同理,pardir也是属性,返回的是 '..'。

os.makedirs('dir1/dir2/dir3/dir4'),用于递归创建目录(假设这四个目录都不存在,该命令能一次性创建这些目录)
如果我们运行第二次,则会报错。因为目录已经存在了,再次创建会报错,为了避免报错,需要添加参数:
os.makedirs('dir1/dir2/dir3/dir4', exist_ok=True)
另外注意,exist_ok是python3中的,python2中没有这个选项。
还可以指定目录权限:
os.makedirs('dir1/dir2/dir3/dir4', mode=777, exist_ok=True)
我们可以测试,在不传递mode时,创建的目录权限为什么;传递mode后,目录权限为什么。
默认的权限是755,但问题是当我们创建其他权限时,不管用。尝试创建777或者555的权限时,发现实际创建的目录权限很异常。
os.removedirs('')删除目录时,实际调用的是rmdir。会有一个问题,就是无法删除非空目录。如果一个目录中有文件或者目录,则删除会报错。
因为在linux上的rmdir只能删除空目录。所以我上图中的说法错误。
os.listdirs('test1'),列出目录test1下的一级目录,比如有test1/test2,test1/test2/test3,test1/test4,则listdirs()会打印出['test1', 'test4'],因为只有test2和test4是一级目录。








 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号