Continuing my consolidation on common operations for python, picked up some useful modules from my code pools, and i am confident it’s indeed useful when you’d met the same situations. lets see what i picked up here -
1. Python 获取指定目录下的路径,文件夹以及文件-
可以使用for (root, dirs, files) in walk(roots)函数
每次遍历的对象都是返回的是一个三元组(root,dirs,files)
root 所指的是当前正在遍历的这个文件夹的本身的地址(及文件夹的路径)
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
即是搜寻目标路径下的文件夹和文件,一层一层的遍历进行,包括当前目标路径本身(这里的路径即是绝对路径地址,不是指单个的文件夹)
import os, time, sys
i = 1
for root, dirs, files in os.walk(r'C:\virRoom_Django\myProject\appOne\imageStore'):
print("{} - See the root value - " .format(i), root)
for dir in dirs:
print("{} - Check the dir value" .format(i), dir)
for file in files:
print("{} - Get the file value" .format(i), file)
print("\n")
i += 1
# 一旦获取了某个路径dir和其中的file,就可以用语句 os.path.join(root, file) 来配合出改文件的完整路径了
2. 获取路径常用操作-
getPath = os.getcwd() # 获取文件当前工作目录路径(绝对路径)
print(getPath)
getPath = os.path.abspath(__file__) # 获得文件所在的路径(绝对路径)
print(getPath)
getPath = os.path.realpath(__file__) # 获得文件所在的路径(绝对路径)
print(getPath)
# 功能同上
import sys
print(sys.path[0]) # 获取文件当前工作目录路径(绝对路径)
print(sys.argv[0]) # 获得文件所在的路径(绝对路径
# 常用来获取目标文件的上层目录路径(比如下面就是取目标文件(即脚本文件)的上2层目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取当前运行脚本的绝对路径(去掉最后2个路径)
print "Base_Dir: ", BASE_DIR
3. 获取时间,计算时间差 -
this kind of request often asked on our daily routine, and how to get the time and timeslot, i believe you would have a lot of solutions, however, I want to share you some useful and small methods here, and i sbould be useful for your reference
# 3.1 获取时间,计算时间差
#注意 - datetime.datetime()表示的时间可以相加减,无须设计函数来计算时间差的小时分秒数,你可以设置datetime(自定义格式)格式,然后时间差也是按这个格式输出的 -
# 2.1 按默认时间格式获取当前的时间,并进行时间差计算
from datetime import time
import datetime
import time
n = datetime.datetime.now() # 获取当前时间,格式类似于这样的 2021-12-28 13:09:37.911000 也包括了微秒计数
print("\n")
print(n)
time.sleep(15)
n1 = datetime.datetime.now()
print(n1)
print(n1 - n) # n1 和 n 格式的时间可以相加减,结果也会精确到微秒, 输出结果大约 - 0:00:15.001000
# 3.2 自定义时间格式来计算时间差
# 如可以这么赋值datetime函数 - datetime.datetime(year=2021, month=12, day=22, hour=11, minute=23, second=20), 然后再相减,得到格式化的时间差
get = datetime.datetime(2021, 1, 12, 12, 12, 12) # 下面的时间格式是按照默认年,月,日,小时,分,秒来设置的
print("\n")
print(get)
get1 = datetime.datetime(2025, 2, 12, 15, 12, 12)
print(get1)
print(get1 - get)
# 输出结果 - 1492 days, 3:00:00
get = datetime.datetime(year=2021, month=12, day=28, hour=11, minute=11, second=11) # 下面的时间格式是按照默认年,月,日,小时,分,秒来设置的
print("\n")
print(get)
get1 = datetime.datetime(year=2021, month=12, day=28, hour=12, minute=12, second=12)
print(get1)
print(get1 - get)
# 输出结果 1:01:01
## (1)字符串转datetime:
print("\n")
string = '2014-01-08 11:59:58'
time1 = datetime.datetime.strptime(string,'%Y-%m-%d %H:%M:%S')
print(time1)
## (2)datetime转字符串:
time1_str = datetime.datetime.strftime(time1,'%Y-%m-%d %H:%M:%S')
print(time1_str)
# 3.3 reference -
'''
python中时间日期格式化符号参数:
%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 当前时区的名称
%% %号本身
'''