最近频繁的与文件操作打交道,这块比较弱,在百度上找到一篇比较不错的文章,这是原文的传送门
有关文件夹与文件的查找,删除等功能在os模块中实现,使用时需要导入这个模块:
import os
####一、获取当前目录
s = os.getwd()
s中保存的就是当前的目录(即文件夹) 下面是一个例子:将abc.py放在A文件夹,不管A放置在硬盘的哪个位置,都可以在A文件夹内生成一个新的文件夹。且文件夹的名字跟据时间自动生成:
import os
import time
filder = time.strftime(r"%Y-%m-%d_%H-%M-%S",time.localtime())
os.makedirs(r'%s/%s' % (os.getcwd(),folder))
####二、更改当前目录
os.chdir("C:\\123")
将当前目录设置为”C:\123”,相当于DOC命令的cd C:\123
####三、将一个路径名分解为目录名和文件名两部分
fpath,fname = os.path.split(‘要分割的的路径’)
例如
a,b = os.path.split("c:\\123\\456\\test.txt")
print a
print b
显示:
c:\123\456
test.txt
####四、分解文件名的扩展名
fpathhandname,fext = os.path.splittext("要分解的路径")
例如:
a,b = os.path.splittext("c:\\123\\456\\text.txt")
print a
print b
显示:
c:\123\456\test
.txt
####五、判断一个路径(目录或文件)是否存在
b = os.path.exists("你要判断的路径")
返回值b: True 或 False
####六、判断一个路径是否是文件
b = os.path.isfile("你要判断的路径")
返回值b : True 或 False
####七、判断一个路径是否是目录
b = os.path.isdir("你要判断的路径")
返回值b: True 或 False
####八、获取某目录中的文件及子目录的列表
L = os.listdir("你要判断的路径")
例如:
L = os.listdir("c:/")
print L
L 是一个列表,这里面既有文件也有子目录
def getDirList(p):
p = str(p)
if p == '':
return []
p = p.replace("/","\\")
if p[-1] != "\\":
p = p + "\\"
a = os.listdir(p)
b = [x for x in a if os.path.isdir(p + x)]
return b
print getDirList("C:\\")
def getFileList(p):
p = str(p)
if p = "":
return []
p = p.replace("/","\\")
if p[-1] != "\\":
p = p+ "\\"
####九、创建子目录
os.makedirs(path) #path 是要创建的子目录
例如:
os.makedirs("c:\\123\\456\\789")
调用有可能失败,
####十、删除子目录
os.rmdir(path) #path: 要删除的子目录
产生异常的原因:
####十一、删除文件
os.remove(filename) #filename : 要删除的文件
产生异常的原因:
####十二、文件改名 os.name(oldfilename,newfilename) 产生异常原因:
####十三、用walk遍历指定文件夹
oswalk()实例:
import os
def VisitDir(path):
for root ,dirs,files in os.walk(path):
for filespath in files:
print os.path.join(root,filespath)
if __name__ == "__main__":
path = "/root"
VisitDir(path)
import os,os.path
def VisitDir(arg,dirname,names):
for filepath in names:
print os.path.join(dirname,filepath)
if __name__ == "__main__":
path = '/home/username'
os.path.walk(path,VisitDir,())
os.path.walk() 与 os.walk() 产生文件名列表并不相同。os.path.walk()产生目录树下的目录径和文件路径,而os.walk()只产生文件路径
下面是自己实现的遍历:
def listdir(leval,path):
for i in os.listdir(path):
print('|-'*(leval + 1) +i)
if os.path.isdir(path+i):
listdir(leval+1,path+i)
path = 'c:' + os.sep+'ant'
print(path+os.sep)
listdir(0,path+os.sep)