一、简介
使用Python,经常会与文件和目录打交道,对于这些操作python提供了一个os模块,里面包含了很多操作文件和目录的函数。全部函数可以用help(os)或是dir(os)查看其用法.
二、代码示例
针对常用的函数操作进行了汇总。
#!/usr/bin/python
# encoding=utf-8
# Filename: dir_file.py
import os
import shutil
#操作目录
opDir=r'D:\test'
#创建目录
if not os.path.exists(opDir):
os.mkdir(opDir)
#更改当前目录到opDir
os.chdir(opDir)
#显示当前目录
print '当前目录是:%s' % os.getcwd()
#创建多级目录
if not os.path.exists(opDir+os.sep+"aa"+os.sep+"bb"):
os.makedirs(opDir+os.sep+"aa"+os.sep+"bb")
#在当前目录下创建文件
if not os.path.exists('test.txt'):
f=open('test.txt',"w")
f.write("write something to file")
f.close()
#读取文件内容
print '文件内容如下:'
if os.path.exists('test.txt'):
f=open('test.txt')
while True:
line = f.readline()
if len(line) == 0: # Zero length indicates EOF
break
print line,
f.close()
#打印一个空行
print '\n当前目录下的文件列表如下:'
#循环当前目录下的文件列表
lfile=os.listdir(os.getcwd())
for sfileName in lfile:
if os.path.isdir(sfileName):
print '目录%s' % sfileName
elif os.path.isfile(sfileName):
print '文件%s' % sfileName
#删除目录(只能删除空目录)
if os.path.exists("dd"):
os.rmdir("dd")
#删除文件
if os.path.exists("aa"):
shutil.rmtree("aa")
#修改目录或文件的名称
if os.path.exists("test"):
os.rename("test", "test2")
#移动目录
if os.path.exists(r'D:\test'):
shutil.move(r'D:\test',r'E:\test')
三、具体例子
http://my.oschina.net/max1984/blog/86132
Python删除指定目录下的过期文件(引用他人BLOG内容 )
服务器的文件每天不断增加,有很多文件碎片,需要定时清理,但还需要保留5天前的数据文件,用linux命令操作
find /data/log -ctime +5 | xargs rm -f |
会对系统造成很大压力,文件数会很多的说...
所以决定写个脚本,用crontab定时调用,来处理该需求
import os
import sys
import time
class DeleteLog:
def __init__(self,fileName,days):
self.fileName = fileName
self.days = days
def delete(self):
if os.path.isfile(self.fileName):
fd = open(self.fileName,'r')
while 1:
buffer = fd.readline()
if not buffer : break
if os.path.isfile(buffer):
os.remove(buffer)
fd.close()
elif os.path.isdir(self.fileName):
for i in [os.sep.join([self.fileName,v]) for v in os.listdir(self.fileName)]:
print i
if os.path.isfile(i):
if self.compare_file_time(i):
os.remove(i)
elif os.path.isdir(i):
self.fileName = i
self.delete()
def compare_file_time(self,file):
time_of_last_access = os.path.getatime(file)
age_in_days = (time.time()-time_of_last_access)/(60*60*24)
if age_in_days > self.days:
return True
return False
if __name__ == '__main__':
if len(sys.argv) == 2:
obj = DeleteLog(sys.argv[1],0)
obj.delete()
elif len(sys.argv) == 3:
obj = DeleteLog(sys.argv[1],int(sys.argv[2]))
obj.delete()
else:
print "usage: python %s listFileName|dirName [days]" % sys.argv[0]
sys.exit(1)