马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 景命 于 2017-7-28 18:45 编辑
高能预警~
知识点:
模块:
模块就是可用代码段的打包。模块是一个包含所有你所定义的函数和变量的文件,它的后缀是(.py)。模块可以做到被别的程序所引入,以使用该模块中的函数功能。import random #导入random模块。
s = random. randint(1,10) #导入random模块后就可以使用randint()方法。
OS模块:
os:operating system #操作系统模块
对于文件系统的访问来说,Python一般是提供os模块来实现。
对于不同的系统(例如:Windows、Mac OS、Linux、UNIX),要使用使用不同的文件系统模块。但是Python是跨平台的,也就是同样的源代码在不同的系统下,都可以同样的实现。有了OS模块,我们不需要关心在不同的操作系统下要使用什么模块,OS模块会帮你选择正确的模块并调用。
绝对路径和相对路径:
绝对路径:从盘符开始,例如"F:\a\b\c\test.txt"。
相对路径:从当前路径开始,例如".\b\c\test.txt"
OS模块的常用方法:
os.getcwd() #返回当前的工作目录>>> import os
>>> os.getcwd()
'D:\\Python'
os.chdir(path) #用于改变当前的工作目录到path
参数:改变到的工作目录的路径。
返回值:如果允许访问返回True,否则返回False。>>> import os
>>> os.chdir("E:\")
>>> os.getcwd()
'E:\\'
os.listdir(path = '.')
#返回指定文件夹包含的文件,或者文件夹名字的列表。以开头字母排序。只支持在UNIX和Windows下使用。('.'表示当前目录,'..'表示上一级目录。)>>> import os
>>> os.listdir("E:\\.")
['$RECYCLE.BIN', '360Downloads', 'C++学习视频', 'CloudMusic', 'java练习题和资料', 'Python', 'System Volume Information', 'WanyxGames', '实验.txt', '家庭组密码.txt', '结果.txt', '计算机组成原理笔记']
>>> os.chdir(r"F:\a\b\c") #更改当前的工作目录
>>> os.getcwd() #查看当前的工作目录
'F:\\a\\b\\c'
>>> os.listdir(".") #如果参数为“.”,那么返回当前工作目录下的所有文件。
['新建文本文档.txt']
os.mkdir(path) #创建单层目录(文件夹),如果该目录已存在那么抛出异常。
参数:要创建的文件夹路径。>>> os.getcwd() #可以看出当前的工作目录并不影响创建。
'E:\\'
>>> os.mkdir("F:\\a")
os.mkdir(r"F:\a\b") #在文件夹a下在创建文件夹b
os.makedirs(path)
#用于递归创建多层文件目录,如果该目录已存在那么抛出异常,注意:“E:\\a\\b”和“E:\\a\\c”并不会有冲突。>>> os.makedirs(r"F:\a") #可以创建单层目录。
>>> os.makedirs(r"F:\a\b\c") #也可以创建多层目录。
os.remove("path")
#用于删除指定路径的文件。如果path中没有文件名,那么抛出异常。在UNIX和Windows中有效。>>> os.remove(r"F:\a\b\c\test.txt")
>>> os.remove(r"F:\a\b\c")
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
os.remove(r"F:\a\b\c")
PermissionError: [WinError 5] 拒绝访问。: 'F:\\a\\b\\c'
os.rmdir(path)
#用于删除指定路径的目录。如果文件夹内不为空(文件夹中有文件夹也不行)那么抛出异常。
参数:要删除文件夹的路径。>>> os.rmdir(r"F:\a")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
os.rmdir(r"F:\a")
OSError: [WinError 145] 目录不是空的。: 'F:\\a'
>>> os.rmdir(r"F:\a\b\c")
os.removedirs(path)
#递归删除目录,从子目录到父目录逐层尝试删除,遇到非空目录会抛出异常。
参数:要删除的目录。>>> os.removedirs(r"F:\a\b\c") #会删除文件夹b和文件夹c,但是文件夹a不会删除。
>>> os.removedirs(r"F:\a")
os.rename(src,dst) #将目录名src修改为dst,如果文件名dst存在那么抛出异常。
参数
src:要修改的目录名。
dst:修改后的目录名。>>> os.rename(r"F:\a\b\3",r"F:\a\b\c") #可以看到src和dst参数可以是路径。
>>> os.rename(r"F:\a\b\c\新建文本文档.txt",r"F:\a\b\c\test.txt") #也可以修改文件名。
os.systen(command) #运行系统的shell命令。
参数:系统命令>>> os.system("cmd") #打开cmd窗口。
-1073741510
>>> os.system("calc") #打开计算器窗口。
-1073741510
os.curdir #指代当前目录(".")>>> os.listdir(".") #查看当前目录中的所有文件
['新建文本文档.txt']
规范的写法是下边的,因为在其他系统中可能就不是"."指代当前目录了。
>>> os.listdir(os.curdir) #用os.curdir替代了(".")。
['新建文本文档.txt']
os.pardir #指代上一级目录("..")>>> os.getcwd() #查看当前工作目录。
'F:\\a\\b\\c'
>>> os.listdir(os.pardir) #查看当前工作目录的上一级目录中的所有文件。
['c', 'c1.txt']
os.sep #输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
os.linesep #输出当前平台所使用的行终止符(Win下为'\r\n',Linux下为'\n')
os.name #输出当前使用的操作系统(包括:'posix','nt','mac','os2','ce','java')>>> os.name
'nt' #nt代表Windows操作系统。
OS.path模块的常用方法:
os.path.basename(path)
#将目录中的路径去掉,只留下文件名。不会判断文件或者路径是否存在
参数:只是一个路径。
返回值:返回文件名组成的字符串。>>> os.path.basename(r"F:\a\b\c1.txt")
'c1.txt'
>>> os.path.basename(r"F:\as\bs\ca1.mp3")
'ca1.mp3' #只会去掉目录中的路径,不会真正的去访问此路径。
>>> os.path.basename(r"F:\a\b\c")
'c' #如果参数中没有文件名,那么返回最后一层目录名。
os.path.dirname(path)
#将目录中的文件名去掉,只留下路径。不会判断文件或者路径是否存在
参数:字符串形的路径名。
返回值:返回路径名所组成的字符串。>>> os.path.dirname(r"F:\a\b\c1.txt")
'F:\\a\\b'
>>> os.path.dirname(r"F:\as\bs\ca1.mp3")
'F:\\as\\bs'
os.path.join(path1[,path2[,……]])
#把path1、path2、……各个部分组成一个路径。不会判断文件或者路径是否存在
参数:字符串形的路径名。
返回值:返回路径名所组成的字符串。>>> os.path.join("a","b","c") #将参数组成一个路径。
'a\\b\\c'
>>> os.path.join("D:\","a","b","c")
'D:\\a\\b\\c' #如果要想在路径前面加上盘符的话,需要自己写"D:\",也就是要自己加"\"
os.path.split(path)
#分割文件名和路径,返回(f_path,f_name)元祖。如果完全使用目录,它也会将最后一个目录作为文件名分离出来,且不会判断文件或者路径是否存在
参数:字符串行的路径名。
返回值:返回由文件路径,和文件名(f_path,f_name)组成的元组。>>> os.path.split(r"D:\a\b\c\ss.txt")
('D:\\a\\b\\c', 'ss.txt') #正常分离出路径和文件名。
>>> os.path.split(r"D:\a\b\c")
('D:\\a\\b', 'c') #参数完全为路径的情况下,会将最后一层的路径分离出来作为文件名。
os.path.splitext(path)
#分离文件名(也可以是目录)与扩展名,返回(f_path,f_extension)元组。
参数:字符串行的路径名。javascript:;
返回值:返回由文件路径,和文件名后缀名(f_path,f_extension)组成的元组。>>> os.path.splitext(r"F:\as\bs\ca1.mp3")
('F:\\as\\bs\\ca1', '.mp3') #将路径名和文件名作为一个元素,后缀名作为一个元素。
os.path.getsize(file) #返回指定文件的尺寸,单位是字节。
参数:要知道尺寸的文件名。
返回值:返回整形(int)形的文件字节数。>>> os.path.getsize(r"F:\a\b\c\abc.txt")
22
os.path.getatime(file)
#返回指定文件,最近的访问时间。(浮点型秒数,可用time块的gmtime()和localtime()函数换算)
参数:要知道最近访问时间的文件名。
返回值:返回浮点型(float)秒数。import time
>>> time.localtime(os.path.getatime(r"F:\a\b\c\test.txt"))
"""这里使用了time模块的localtime()函数来转换getatime的返回值"""
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=17, tm_hour=16, tm_min=33, tm_sec=42, tm_wday=0, tm_yday=198, tm_isdst=0)
os.path.getctime(file)
#返回指定文件的创建时间。(浮点型秒数,可用time块的gmtime()和localtime()函数换算)
参数:要知道创建时间的文件名。
返回值:返回浮点型(float)秒数。import time
>>> time.localtime(os.path.getatime(r"F:\a\b\c\test.txt"))
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=17, tm_hour=16, tm_min=33, tm_sec=42, tm_wday=0, tm_yday=198, tm_isdst=0)
os.path.getmtime(file)
#返回指定文件最新的修改时间。(浮点型秒数,可用time块的gmtime()和localtime()函数换算)
参数:文件名(字符串形)。
返回值:返回浮点型(float)秒数。import time
>>> time.localtime(os.path.getmtime(r"F:\a\b\c\test.txt"))
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=17, tm_hour=16, tm_min=35, tm_sec=13, tm_wday=0, tm_yday=198, tm_isdst=0)
os.path.exists(path) #判断指定路径(文件或者目录)是否存在。
参数:文件或路径。
返回值:True、False。>>> os.path.exists(r"F:\a\b\c\test.txt")
True
>>> os.path.exists(r"F:\a\b\c\te.txt")
False
>>> os.path.exists(r"F:\a\b\c\d")
False
os.path.isabs(path) #判断指定路径是否为绝对路径。
参数:路径名。
返回值:True、False。>>> os.path.isabs(r"F:\a\b\c\d")
True
>>> os.path.isabs(r".\b\c\d")
False
os.path.isdir(path) #判断指定路径是否存在且是一个目录。
参数:路径名。
返回值:True、False。>>> os.path.isdir(r".")
True
>>> os.path.isdir(r".\s\d")
False
os.path.isfile(path) #判断指定路径是否存在且是一个文件。
参数:路径名。
返回值:True、False。>>> os.path.isfile(r".\test.txt")
True
os.path.islink(path) #判断一个路径是否存在且是一个符号链接(快捷方式)。
参数:路径名。
返回值:True、False。>>> os.path.islink(r"D:\Code Bolck\CodeBlocks\codeblocks.exe")
False
os.path.ismount(path) #判读指定路径是否存在且是一个挂载点("E:\\")。
参数:路径名。
返回值:True、False。>>> os.path.ismount("E:\")
True
>>> os.path.ismount("E:\\Python")
False
os.path.samefile(path1,path2) #判断path1和path2两个路径是否指向同一个文件。
参数:路径名。
返回值:True、False。>>> os.path.samefile(r"D:\Code Bolck\CodeBlocks\codeblocks.exe",r"D:\Code Bolck\CodeBlocks\codeblocks.exe")
True #判断文件路径和文件的快捷方式是否指向同一个文件。
os.walk() #输出目录中的所有文件夹路径,文件夹名字,文件名。
具体的我也不太理解,自己动手打打就懂了。
参数:
top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。
topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。
onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。
onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。
#就拿动动手的第0题作为栗子。import os
def file_search(file_path,file_name):
for dir_path,dir_names,filename in os.walk(file_path):
if file_name in filename:
print(os.path.join(dir_path,file_name))
i,j = input("请输入要查找的文件目录:"),input("请输入要查找的文件名称:")
file_search(i,j)
|