python学习-常用模块-os,random,logging

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习-常用模块-os,random,logging相关的知识,希望对你有一定的参考价值。

os模块(补充中)

1.查看当前路径及切换路径

>>> import os
>>> os.getcwd()  #获取当前文件所在的路径
‘D:\\\\python\\\\Lib\\\\idlelib‘
>>> os.chdir(‘../‘)  #切换当上一层目录,此处可以是相对路径
>>> os.getcwd()
‘D:\\\\python\\\\Lib‘

>>> os.chdir(‘D:\\Program Files (x86)‘)  #也可以是绝对路径
>>> os.getcwd()
‘D:\\\\Program Files (x86)‘

补充:

在pycharm上发现os.getcwd()与os.path.realpath("./")返回的都是.py文件的绝对路径,其实不是的,这个目录并不是指脚本所在的目录,而是所运行脚本的目录。

实际上os.path.relpath(path[, start])  #从start开始计算相对路径。

print(__file__)·#返回文件的相对路径,包含文件名称

os.path.abspath(__file__)#返回文件的绝对路径,包含文件名称

os.path.dirname(os.path.abspath(__file__))#上一个路径的文件名称所在的目录,就是当前文件的上一层

dis_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#再往上一层,可以利用这条,通过import sys; sys.path.append(dis_path),将其加到环境变量中,这样就可以实现跨路径调用文件。

2.查看当前路径下的文件是否存在

os.path.exists(‘文件名‘),存在返回True

可以结合上面的切换路径使用,查看不同路径下有没有此文件

3,替换与重命名文件

os.repalce()

replace(*args, **kwargs): 

Rename a file or directory, overwriting the destination.
前面文件用后面文件名替换

os.rename()

用法一样,但是有个区别

os.replace(f1,f2) #f2如果存在,f1仍然更名为f2,并将f2替换掉

os.rename(f1,f2)#f2如果存在,就报错

random模块 

1 import random
2 print(random.random())  #打印一个随机的float数
3 print(random.randint(1,5)) #打印1到5之间随机的int数,包括1和5
4 print(random.randrange(1,5))  #打印1到5之间随机的int数,包括1,不包括5

输出:

0.3706594058307373
4
2

实例:生成验证码

 1 import random
 2 checkcode = ‘‘
 3 for i in range(4):
 4     current = random.randrange(0,4)
 5     if current != i:
 6         """chr()返回整数对应的ASCII码中的英文字母,这里65-90代表26个大写字母,97-122返回26个小写字母。相反,ord(‘a‘)返回字母a在ascii中对应的数字"""
 7         temp = chr(random.randint(65,90))
 8     else:
 9         temp = random.randint(0,9)
10     checkcode += str(temp)
11 print(checkcode)

logging模块(补充中) 

日志共有6个级别,由高到低如下:

CRITICAL = 50

FATAL = CRITICAL

ERROR = 40

WARNING = 30

WARN = WARNING

INFO = 20

DEBUG = 10

NOTSET = 0

 

1,默认情况下,longging只会讲warning以上的级别的日志打印到屏幕上,包括warning。

import logging

 

# logging.basicConfig()

 

logging.debug(‘this is debug‘)

logging.info(‘this is info‘)

logging.warning(‘this is warning‘)

logging.error(‘this is error‘)

logging.critical(‘this is critical‘)

 

输出:

WARNING:root:this is warning

ERROR:root:this is error

CRITICAL:root:this is critical

 

 

2.通过logging.basicConfig函数对日志的输出格式及方式做相关配置

import logging

logging.basicConfig(filename=‘log.log‘,

                    format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s‘,

                    datefmt=‘%Y-%m-%d %H:%M:%S %p‘,

                    level=10)

 

logging.debug(‘this is debug‘)

logging.info(‘this is info‘)

logging.warning(‘this is warning‘)

logging.error(‘this is error‘)

logging.critical(‘this is critical‘)

 

会生成一个log.log的文件,并将日志追加到文件中:默认是追加。

如下:

2017-05-25 18:09:13 PM - root - DEBUG -logging mod:  this is debug

2017-05-25 18:09:13 PM - root - INFO -logging mod:  this is info

2017-05-25 18:09:13 PM - root - WARNING -logging mod:  this is warning

2017-05-25 18:09:13 PM - root - ERROR -logging mod:  this is error

2017-05-25 18:09:13 PM - root - CRITICAL -logging mod:  this is critical

?

 

logging.basicConfig函数各参数:

filename: 指定日志文件名

filemode: 和file函数意义相同,指定日志文件的打开模式,‘w‘或‘a‘

format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:

 %(levelno)s: 打印日志级别的数值

 %(levelname)s: 打印日志级别名称

 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]

 %(filename)s: 打印当前执行程序名

 %(funcName)s: 打印日志的当前函数

 %(lineno)d: 打印日志的当前行号

 %(asctime)s: 打印日志的时间

 %(thread)d: 打印线程ID

 %(threadName)s: 打印线程名称

 %(process)d: 打印进程ID

 %(message)s: 打印日志信息

datefmt: 指定时间格式,同time.strftime()

level: 设置日志级别,默认为logging.WARNING

stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

以上日志模块参考:http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html









以上是关于python学习-常用模块-os,random,logging的主要内容,如果未能解决你的问题,请参考以下文章

python 常用模块之random,os,sys 模块

python常用模块(random,hashlib,os,sys)

Python 常用模块 -- collections模块,time模块,random模块,os模块,sys模块

Python之常用模块os模块和sys模块

python-27-其他常用模块

python内几种常用内置模块的介绍,包括time模块,datetime模块,random模块,os模块,sys模块,hashlib模块