Python 标准库是随Python附带安装的,它包含大量极其有用的模块。熟悉
Python 标准库是十分重要的,因为如果你熟悉这些库中的模块,那么你的大多数问题
都可以简单快捷地使用它们来解决。
sys 模块包含了系统指定的函数功能。一般我想了解些系统相关的信息时会用到这个模块。
代码示例:
import sys
(
"当前python版本的详细信息")
print(sys.version_info)
执行结果:
sys.version_info(major=3, minor=6, micro=0, releaselevel='final',serial=0)
注:我们可以看出当前python的版本是3.6.0
常用方法列表:
方法 |
功能描述 |
sys.argv |
命令行参数List,第一个元素是程序本身路径 |
sys.path |
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 |
sys.modules.keys() |
返回所有已经导入的模块列表 |
sys.modules |
返回系统导入的模块字段,key是模块名,value是模块 |
sys.exc_info() |
获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息 |
sys.exit(n) |
退出程序,正常退出时exit(0) |
sys.hexversion |
获取Python解释程序的版本值,16进制格式如:0x020403F0 |
sys.version |
获取Python解释程序的版本信息 |
sys.platform |
返回操作系统平台名称 |
sys.stdout |
标准输出 |
sys.stdout.write('aaa') |
标准输出内容 |
sys.stdout.writelines() |
无换行输出 |
sys.stdin |
标准输入 |
sys.stdin.read() |
输入一行 |
sys.stderr |
错误输出 |
sys.exc_clear() |
用来清除当前线程所出现的当前的或最近的错误信息 |
sys.exec_prefix |
返回平台独立的python文件安装的位置 |
sys.byteorder |
本地字节规则的指示器,big-endian平台的值是'big',little-endian平台的值是'little' |
sys.copyright |
记录python版权相关的东西 |
sys.api_version |
解释器的C的API版本 |
sys.version_info |
'final'表示最终,也有'candidate'表示候选,表示版本级别,是否有后继的发行 |
sys.getdefaultencoding() |
返回当前你所用的默认的字符编码格式 |
sys.getfilesystemencoding() |
返回将Unicode文件名转换成系统文件名的编码的名字 |
sys.builtin_module_names |
Python解释器导入的内建模块列表 |
sys.executable |
Python解释程序路径 |
sys.getwindowsversion() |
获取Windows的版本 |
sys.stdin.readline() |
从标准输入读一行,sys.stdout.write("a")屏幕输出a |
sys.setdefaultencoding(name) |
用来设置当前默认的字符编码(详细使用参考文档) |
sys.displayhook(value) |
如果value非空,这个函数会把他输出到sys.stdout(详细使用参考文档) |
os模块封装了常用的文件以及目录操作。
代码示例:
import
os
os.makedirs(
"D:\\tmp\\xiaodang")
os.rename(
"D:\\tmp\\xiaodang",
"G:\\tmp\\xiaodaobiancheng")
执行结果:
注:会在D盘的tmp下创建xiaodang目录
将xiaodang改名为xiaodaobiancheng
常用方法列表:
方法 |
功能描述 |
os.remove() |
删除文件 |
os.unlink() |
删除文件 |
os.rename() |
重命名文件 |
os.listdir() |
列出指定目录下所有文件 |
os.chdir() |
改变当前工作目录 |
os.getcwd() |
获取当前文件路径 |
os.mkdir() |
新建目录 |
os.rmdir() |
删除空目录(删除非空目录,使用shutil.rmtree()) |
os.makedirs() |
创建多级目录 |
os.removedirs() |
删除多级目录 |
os.stat(file) |
获取文件属性 |
os.chmod(file) |
修改文件权限 |
os.utime(file) |
修改文件时间戳 |
os.name(file) |
获取操作系统标识 |
os.system() |
执行操作系统命令 |
os.execvp() |
启动一个新进程 |
os.fork() |
获取父进程ID,在子进程返回中返回0 |
os.execvp() |
执行外部程序脚本(Uinx) |
os.spawn() |
执行外部程序脚本(Windows) |
os.access(path,mode) |
判断文件权限(详细参考cnblogs) |
os.wait() |
暂时未知 |
这个模块封装了对系统路径的常用的操作。
代码示例:
import
os.path
(
os.path.abspath(
'practise.py'))
(
os.path.split(
"D:\\tmp\\xiaodang"))
执行结果:
C:\demo\practise.py
('D:\\tmp', 'xiaodang')
常见方法列表:
方法 |
功能描述 |
os.path.split(filename) |
将文件路径和文件名分割(会将最后一个目录作为文件名而分离) |
os.path.splitext(filename) |
将文件路径和文件扩展名分割成一个元组 |
os.path.dirname(filename) |
返回文件路径的目录部分 |
os.path.basename(filename) |
返回文件路径的文件名部分 |
os.path.join(dirname,basename) |
将文件路径和文件名凑成完整文件路径 |
os.path.abspath(name) |
获得绝对路径 |
os.path.splitunc(path) |
把路径分割为挂载点和文件名 |
os.path.normpath(path) |
规范path字符串形式 |
os.path.exists() |
判断文件或目录是否存在 |
os.path.isabs() |
如果path是绝对路径,返回True |
os.path.realpath(path) |
返回path的真实路径 |
os.path.relpath(path[,start]) |
从start开始计算相对路径 |
os.path.normcase(path) |
转换path的大小写和斜杠 |
os.path.isdir() |
判断name是不是一个目录,name不是目录就返回false |
os.path.isfile() |
判断name是不是一个文件,不存在返回false |
os.path.islink() |
判断文件是否连接文件,返回boolean |
os.path.ismount() |
指定路径是否存在且为一个挂载点,返回boolean |
os.path.samefile() |
是否相同路径的文件,返回boolean |
os.path.getatime() |
返回最近访问时间浮点型 |
os.path.getmtime() |
返回上一次修改时间浮点型 |
os.path.getctime() |
返回文件创建时间浮点型 |
os.path.getsize() |
返回文件大小字节单位 |
os.path.commonprefix(list) |
返回list(多个路径)中,所有path共有的最长的路径 |
os.path.lexists# |
路径存在则返回True,路径损坏也返回True |
os.path.expanduser(path) |
把path中包含的"~"和"~user"转换成用户目录 |
os.path.expandvars(path) |
根据环境变量的值替换path中包含的”$name”和”${name}” |
os.path.sameopenfile(fp1,fp2) |
判断fp1和fp2是否指向同一文件 |
os.path.samestat(stat1,stat2) |
判断stattuplestat1和stat2是否指向同一个文件 |
os.path.splitdrive(path) |
一般用在windows下,返回驱动器名和路径组成的元组 |
os.path.walk(path,visit,arg) |
遍历path,给每个path执行一个函数详细见手册 |
os.path.supports_unicode_filenames() |
设置是否支持unicode路径名 |
stat模块可以获取文件的属性方面的详细信息。
代码示例:
import stat
import datetime
fileStats =
os.stat(
"D:\\tmp\\xiaodao\\FolderOperate_bak.py")
(
"文件大小为:"+(fileStats[stat.ST_SIZE]).__str__()+
'个字节')
(
'最后的修改时间:'+datetime.datetime.fromtimestamp(fileStats[stat.ST_MTIME]).__str__())
执行结果:
文件大小为:102个字节
最后的修改时间:2017-03-16 10:42:34
常见方法列表:
方法 |
功能描述 |
fileStats = os.stat(path) |
获取到的文件属性列表 |
fileStats[stat.ST_MODE] |
获取文件的模式 |
fileStats[stat.ST_SIZE] |
文件大小 |
fileStats[stat.ST_MTIME] |
文件最后修改时间 |
fileStats[stat.ST_ATIME] |
文件最后访问时间 |
fileStats[stat.ST_CTIME] |
文件创建时间 |
stat.S_ISDIR(fileStats[stat.ST_MODE |
是否目录 |
stat.S_ISREG(fileStats[stat.ST_MODE]) |
是否一般文件 |
stat.S_ISLNK(fileStats[stat.ST_MODE]) |
是否连接文件 |
stat.S_ISSOCK(fileStats[stat.ST_MODE]) |
是否COCK文件 |
stat.S_ISFIFO(fileStats[stat.ST_MODE]) |
是否命名管道 |
stat.S_ISBLK(fileStats[stat.ST_MODE]) |
是否块设备 |
stat.S_ISCHR(fileStats[stat.ST_MODE]) |
是否字符设置 |
datetime模块存放了常用的时间、日期处理。通过引用该模块我们很方便的进行时间与字符串的转换,时间和日期的转换,时间元组与时间的转换,时间的属性提取等方面的操作。
代码示例:
from datetime import datetime, date,
time
d = date(
2017,
3,
22)
(
"输出个YYYY-MM-DD格式的时间字符串:"+d.isoformat())
(
"星期"+(d.weekday()+
1).__str_
_())
print(d.isocalendar())
(datetime.strptime(
'2014-03-16 12:21:21',
"%Y-%m-%d%H:%M:%S"))
print(datetime.now().timetuple())
输出结果:
输出个YYYY-MM-DD格式的时间字符串:2017-03-22
星期3
(2017, 12, 3)
2014-03-1612:21:21
time.struct_time(tm_year=2017,tm_mon=3, tm_mday=22, tm_hour=16, tm_min=10, tm_sec=51, tm_wday=2, tm_yday=81,tm_isdst=-1)
常用方法列表:
方法 |
功能描述 |
datetime.date.today() |
本地日期对象,(用str函数可得到它的字面表示(2014-03-24)) |
datetime.date.isoformat(obj) |
当前[年-月-日]字符串表示(2014-03-24) |
datetime.date.fromtimestamp() |
返回一个日期对象,参数是时间戳,返回 [年-月-日] |
datetime.date.weekday(obj) |
返回一个日期对象的星期数,周一是0 |
datetime.date.isoweekday(obj) |
返回一个日期对象的星期数,周一是1 |
datetime.date.isocalendar(obj) |
把日期对象返回一个带有年月日的元组 |
datetime.date.fromtimestamp(timestamp[,tz]) |
按时间戳返回一个date对象,可指定时区 |
datetime.datetime.today() |
返回一个包含本地时间(含微秒数)的datetime对象 2014-03-24 23:31:50.419000 |
datetime.datetime.now([tz]) |
返回指定时区的datetime对象 2014-03-24 23:31:50.419000 |
datetime.datetime.utcnow() |
返回一个零时区的datetime对象 |
datetime.datetime.fromtimestamp(timestamp[,tz]) |
按时间戳返回一个datetime对象,可指定时区 |
datetime.utcfromtimestamp(timestamp) |
按时间戳返回一个UTC-datetime对象 |
datetime.datetime.strptime('2017-03-22 12:21:21',"%Y-%m-%d %H:%M:%S") |
将字符串转为datetime对象 |
datetime.datetime.strftime(datetime.datetime.now(), '%Y%m%d %H%M%S') |
将datetime对象转换为str表示形式 |
datetime.date.today().timetuple() |
转换为时间戳datetime元组对象,可用于转换时间戳 |
datetime.datetime.now().timetuple() |
|
String模块是对字符串的一些常用处理,包括字符串的大小写、字符串拼接、字符串查找、字符串替换等等。
代码示例:
mystr=
'xiao dao bian cheng'
(mystr.rpartition(
' '))
str =
"this is \nstring example....\nwow!!!"
print (mystr.splitlines())
执行结果:
('xiao dao bian', ' ', 'cheng')
['xiao dao bian cheng']
常用方法列表见下,示例程序可参见字符串处理章节9.5里的示例。
方法 |
功能描述 |
str.capitalize() |
把字符串的第一个字符大写 |
str.center(width) |
返回一个原字符串居中,并使用空格填充到width长度的新字符串 |
str.ljust(width) |
返回一个原字符串左对齐,用空格填充到指定长度的新字符串 |
str.rjust(width) |
返回一个原字符串右对齐,用空格填充到指定长度的新字符串 |
str.zfill(width) |
返回字符串右对齐,前面用0填充到指定长度的新字符串 |
str.count(str,[beg,len]) |
返回子字符串在原字符串出现次数,beg,len是范围 |
str.decode(encodeing[,replace]) |
解码string,出错引发ValueError异常 |
str.encode(encodeing[,replace]) |
解码string |
str.endswith(substr[,beg,end]) |
字符串是否以substr结束,beg,end是范围 |
str.startswith(substr[,beg,end]) |
字符串是否以substr开头,beg,end是范围 |
str.expandtabs(tabsize=8) |
把字符串的tab转为空格,默认为8个 |
str.find(str,[stat,end]) |
查找子字符串在字符串第一次出现的位置,否则返回-1 |
str.index(str,[beg,end]) |
查找子字符串在指定字符中的位置,不存在报异常 |
str.isalnum() |
检查字符串是否以字母和数字组成,是返回true否则False |
str.isalpha() |
检查字符串是否以纯字母组成,是返回true,否则false |
str.isdecimal() |
检查字符串是否以纯十进制数字组成,返回布尔值 |
str.isdigit() |
检查字符串是否以纯数字组成,返回布尔值 |
str.islower() |
检查字符串是否全是小写,返回布尔值 |
str.isupper() |
检查字符串是否全是大写,返回布尔值 |
str.isnumeric() |
检查字符串是否只包含数字字符,返回布尔值 |
str.isspace() |
如果str中只包含空格,则返回true,否则FALSE |
str.title() |
返回标题化的字符串(所有单词首字母大写,其余小写) |
str.istitle() |
如果字符串是标题化的(参见title() |
str.join(seq) |
以str作为连接符,将一个序列中的元素连接成字符串 |
str.split(str='',num) |
以str作为分隔符,将一个字符串分隔成一个序列,num是被分隔的字符串 |
str.splitlines(num) |
以行分隔,返回各行内容作为元素的列表 |
str.lower() |
将大写转为小写 |
str.upper() |
转换字符串的小写为大写 |
str.swapcase() |
翻换字符串的大小写 |
str.lstrip() |
去掉字符左边的空格和回车换行符 |
str.rstrip() |
去掉字符右边的空格和回车换行符 |
str.strip() |
去掉字符两边的空格和回车换行符 |
str.partition(substr) |
从substr出现的第一个位置起,将str分割成一个3元组。 |
str.replace(str1,str2,num) |
查找str1替换成str2,num是替换次数 |
str.rfind(str[,beg,end]) |
从右边开始查询子字符串 |
str.rindex(str,[beg,end]) |
从右边开始查找子字符串位置 |
str.rpartition(str) |
类似partition函数,不过从右边开始查找 |
str.translate(str,del='') |
按str给出的表转换string的字符,del是要过虑的字符 |
通过本章的学习,我们熟悉了python里常用模块的使用,这是为我们编写高质量的代码奠定了良好的基础。接下来我们来聊聊编程风格方面的事情。