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

时间: 2024-10-05 23:05:09

python学习-常用模块-os,random,logging的相关文章

python学习- 常用模块与re正则

开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致 1 import sys 2 import re 3 4 def welcome_fun

python学习——常用模块

random模块 time模块 sys模块 os模块 取随机数的模块import random #去随机小数:数学计算 import random print(random.random()) #去0~1之间 print(random.uniform(1,2)) # 去范围内的小数 #去随机整数# 应用:彩票,抽奖 import randomprint(random.randint(1,2)) #[1,2]顾头也顾尾 print(random.randrange(1,2)) # [1,2)顾头不

python学习-常用模块8-操作excel,操作写、查、改

一.写excelimport xlwt #只能写excel book = xlwt.Workbook() #创建excelsheet = book.add_sheet('sru_info')#加一个sheet页sheet.write(0,0,'学生编号')sheet.write(0,1,'学生姓名')sheet.write(0,2,'成绩')sheet.write(1,0,'1')sheet.write(1,1,'李广')sheet.write(1,2,'98.2')book.save('stu

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

Python学习--Selenium模块学习(2)

Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径2. 通过 `$PATH`环境变量找寻浏览器驱动 可参考Python学习--Selenium模块简单介绍(1) 控制浏览器访问URL browser.get(https://www.baidu.com/)   find系列函数定位元素 - `find_element_by_xxx` 返回第一个符合条件 `WebElement` - `find_elements_by_xxx` 返回符合条件所有元素包含了`WebE

Python学习--Selenium模块

1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台 原文地址:https://www.cnblogs.com/ftl1012/p/seleniumAll.html

Python之常用模块(re,时间,random,os,sys,序列化模块)(Day20)

一.时间模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 在Python中表示时间的三种方式:时间戳,元组(struct_time), 格式化的时间字符串[时间戳为计算机能够识别的时间:时间字符串是人能够识别的时间:元组则是用来操作时间的] #导入时间模块 >>>import time #时间戳 >>>time.time() 1500875844.800804 #时间字符串 >

Python之路-python(常用模块学习)

模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib re正则表达式 1.模块: 定义:其实模块简单说就是一堆代码实现某个功能,它们是已经写好的.py文件.只需要用import应用即可. 分类: 1.自定义模块 2.内置标准模块(又称标准库) 3.开源模块    1.自定义模块,就是自己写的.py文件为了实现某个功能.    2.内置模块,就是python自身已经写好的某个功能,例如