python常用小模块使用汇总

时间:2021-11-07 18:32:00

 

    在写代码过程中常用到一些好用的小模块,现整理汇总一下:

1、获取当前的文件名和目录名,并添到系统环境变量中。

file = os.path.abspath(__file__)                              #获取文件的绝对路径
file_name = os.path.basename(file)                         #获取文件名
file_dir = os.path.dirname(os.path.dirname(file))      #获取文件的上一层目录
os.path.join(file_dir, "logs")
sys.path.append(file_dir)

 具体常用的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    输出用于分割文件路径的字符串 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所指向的文件或者目录的最后修改时间
 

2、获取字符串汉字的个数

python常用小模块使用汇总python常用小模块使用汇总
def get_chinese_num(uchar):
i
= 0
for utext in uchar:
if u'\u4e00' <= utext <= u'\u9fa5':
i
+= 1
return i

str
= "2015秋冬新款加绒保暖套头卫衣 15541707 BC17灰花灰"
a
= get_chinese_num(str)
b
= len(str)
print(a,b)
获取汉字个数

 

3、 对print函数进行封装,根据不同类型显示不同颜色


python常用小模块使用汇总python常用小模块使用汇总
def show_message(msg, msgtype):
"""
对print函数进行封装,根据不同类型显示不同颜色
:param msg: 显示的消息体
:param msgtype: 消息类型
:return: 返回格式化过的内容
"""
if msgtype == "NOTICE":
show_msg
= "\n\033[1;33m{0}\033[0m\n".format(msg)
elif msgtype == "ERROR":
show_msg
= "\n\033[1;31m{0}\033[0m\n".format(msg)
elif msgtype == "INFORMATION":
show_msg
= "\n\033[1;32m{0}\033[0m\n".format(msg)
else:
show_msg
= "\n{0}\n".format(msg)
print(show_msg)
不同类型显示不同颜色

 

4、根据时间生成一个不重复的流水号


import time
from datetime import datetime


serno = "{0}{1}".format(datetime.now().strftime("%Y%m%d%H%M%S"), str(int(time.time())))
print(serno)


 

5、将数字星期转换为中文数字


python常用小模块使用汇总python常用小模块使用汇总
def numtochr(num_of_weekday):
"""
将数字星期转换为中文数字
:param num_of_weekday: 星期几的数字字符( 0,1,2,3,4,5,6)
:return: 中文 星期几
"""
chrtuple
= ('', '', '', '', '', '''')
num
= int(num_of_weekday)
return chrtuple[num]
数字星期转换为中文数字

 

6、判断input输入的信息是否为空的公共检测函数,为空继续输入,不为空返回输入的信息


python常用小模块使用汇总python常用小模块使用汇总
def input_msg(message, limit_value=tuple()):
"""
判断input输入的信息是否为空的公共检测函数,为空继续输入,不为空返回输入的信息
:param limit_value: 对输入的值有限制,必须为limit_value的值;ex:("admin","user")
:param message: input()函数的提示信息
:return: 返回输入的信息
"""
is_null_flag
= True
while is_null_flag:
input_value
= input(message).strip().lower()
if not input_value:
show_message(
"输入不能为空!", "ERROR")
continue
elif len(limit_value) > 0:
if input_value not in limit_value:
show_message(
"输入的值不正确,请重新输入!", "ERROR")
continue
else:
is_null_flag
= False
else:
is_null_flag
= False
continue
return input_value
输入是否为空

实例说明:

choose = common.input_msg("选择功能编号[1-5]: ", ("1", "2", "3", "4", "5")).strip()


 

7、对输入的日期进行判断是否正确 yyyy-mm-dd or yyyy-m-d


python常用小模块使用汇总python常用小模块使用汇总
def input_date(msg, default_date):
"""
对输入的日期进行判断是否正确 yyyy-mm-dd or yyyy-m-d
:param msg:输入提示信息
:param default_date: 默认日期
:return:返回日期 str类型
"""
check_flag
= False
while not check_flag:
strdate
= input(msg).strip()
if not strdate:
strdate
= default_date

try:
date_list
= strdate.split("-")
result
= date(int(date_list[0]), int(date_list[1]), int(date_list[2]))
check_flag
= True
except ValueError:
show_message(
"输入日期不合法,请重新输入!", "ERROR")
continue
return result.strftime("%Y-%m-%d")
输入的日期进行判断是否正确

 

8、生成一个指定范围值之内随机数,并对随机数进行判断

python常用小模块使用汇总python常用小模块使用汇总
def random_decide(random_num,cmp_value,cmp_mode='eq'):
"""
生成一个指定范围值之内随机数,并对随机数进行判断
:param random_num:用来定义随机数的范围值
:param cmp_value:定义需要比对的值
:param cmp_flag:如果是gt或lt,则进行大于或小于判断,如果是eq,则为等于判断,默认为eq
:return: 返回True或False
"""
ra
= random.randrange(1,random_num)
if cmp_mode == 'eq':
express
= "{0} == {1}"
elif cmp_mode == 'gt':
express
= "{0} > {1}"
elif cmp_mode == 'lt':
express
= "{0} < {1}"
else:
show_message(
'比较模式错误','ERROR')
return False

flag
= eval(express.format(ra,cmp_value))

if flag:
return True
return False
随机数大小判断

 

9、中英文混合对齐

python常用小模块使用汇总python常用小模块使用汇总
def myljust(str1, width, fillchar = None):
'''
中英文混合左对齐
:param str1: 欲对齐字符串
:param width: 宽度
:param fillchar: 填充字符串
:return: 新的经过左对齐处理的字符串对象
'''
if fillchar == None:
fillchar
= ' '
length
= len(str1.encode('gb2312'))
fill_char_size
= width - length if width >= length else 0
return "%s%s" %(str1, fillchar * fill_char_size)


def myrjust(str1, width, fillchar = None):
'''
中英文混合右对齐
:param str1: 欲对齐字符串
:param width: 宽度
:param fillchar: 填充字符串
:return: 新的经过右对齐处理的字符串对象
'''
if fillchar == None:
fillchar
= ' '
length
= len(str1.encode('gb2312'))
fill_char_size
= width - length if width >= length else 0
return "%s%s" %(fillchar * fill_char_size, str1)

def mycenter(str1, width, fillchar = None):
'''
中英文混合居中对齐
:param str1: 欲对齐字符串
:param width: 宽度
:param fillchar: 填充字符串
:return: 新的经过居中对齐处理的字符串对象
'''
if fillchar == None:
fillchar
= ' '
length
= len(str1.encode('gb2312'))

fill_char_size
= width - length if width >= length else 0
if length%2 == 0:
return "%s%s%s" %(fillchar * (fill_char_size //2), str1, fillchar* (fill_char_size // 2))
else:
return "%s%s%s" %(fillchar * (fill_char_size //2 + 1), str1, fillchar* (fill_char_size // 2))
中英文混合对齐