Python使用os模块和fileinput模块来操作文件目录
os模块 下面介绍os的常用功能 1.获取当前路径 >>> os.getcwd() '/root/python' 2.获取目录中的内容 >>> os.listdir(os.getcwd()) ['deco.py','6.py','inputfile.py','uniFile.py','oddnogen.py','ospathex.py','operate.py','bianliang.py','typecheck1.py'] 3.创建目录 >>> os.mkdir('/root/pythontest') 一次性创建嵌套目录可使用os.makedirs,makedirs可以生成多层递归目录,removedirs可以删除多层递归的空目录,若目录中有文件则无法删除;os.system():运行shell命令; >>> os.environ['HOME'] '/root' >>> os.makedirs(os.path.join(os.environ['HOME'],'test','py')) >>> os.system('ls -lR /root/test') /root/test: total 4 drwxr-xr-x 2 root root 4096 2013-03-29 17:27 py /root/test/py: total 0 0 4.改变工作目录 >>> os.getcwd() '/root/python' >>> os.chdir('/etc') >>> os.getcwd() '/etc' 5.删除目录 >>> os.rmdir('/root/pythontest') >>> 注:删除目录必须是空目录 6.删除文件 >>> os.remove('/root/pytest.py') 7.重命名文件或者目录 >>> os.rename('/root/pytest.py','/root/test.py') 8.字符串给出当前平台使用的终止符,例如:Windows使用'rn',Linux使用'n' >>> os.linesep 'n' 以下是os.path模块 9.判断是否是目录 >>> os.path.isdir('/root/python') True 10.判断是否为文件 >>> os.path.isfile('/root/python') False 11.返回一个路径的目录名和文件名 >>> os.path.split(os.getcwd()) ('/root','python') 12.判断是否存在文件或目录name >>> os.path.exists('/root') True >>> os.path.exists('/root/1.py') False 13.获得文件大小 >>> os.path.getsize('/root/python/if.py') 282 14.返回文件路径,返回文件名 >>> os.path.dirname('/root/python/if.py') '/root/python' >>> os.path.basename('/root/python/if.py') 'if.py' 15.连接目录与文件名或目录 >>> os.path.join('/dave/test/','1.py') '/dave/test/1.py' 判断一个目录里哪些是文件哪些是目录. >>> for file in os.listdir('/root/python'): ... if os.path.isdir(file): ... print file,"is a directory" ... else: ... print file,"is a file" ... deco.py is a file inputfile.py is a file operate.py is a file hello.pyc is a file userpw.py is a file 4.py is a file answer is a directory fileinput模块 下面是fileinput模块中的常用函数
>>> import fileinput >>> for eachline in fileinput.input("/root/datafile.txt"): ... print eachline ... Dave python >>> for eachline in fileinput.input("/root/datafile.txt"): ... print fileinput.filename() ... /root/datafile.txt /root/datafile.txt >>> for eachline in fileinput.input("/root/datafile.txt"): ... print fileinput.lineno(),eachline ... 1 Dave 2 python >>> for eachline in fileinput.input("/root/datafile.txt"): ... if fileinput.isfirstline(): ... print eachline ... else: ... break ... Dave 下面是一个关于日志分析的小实例,将日志中截取匹配的电话号码,如800-333-1212 root@10.1.1.45:~# cat telphone.log 027-987-1212 02187899682 021-110-9632 root@10.1.1.45:~# cat fileinputtest.py #!/usr/bin/python2.5 import fileinput import sys import re pattern = "d{3}-d{3}-d{4}" filePath = "/root/telphone.log" for eachline in fileinput.input(filePath): a = re.search(pattern,eachline) if a: # sys.stdout.write("============n") # sys.stdout.write(eachline) print "============" print 'line:',fileinput.lineno(),'filename:',fileinput.filename(),'length:',len(eachline.strip('n')),eachline root@10.1.1.45:~# ./fileinputtest.py ============ line: 1 filename: /root/telphone.log length: 12 027-987-1212 ============ line: 3 filename: /root/telphone.log length: 12 021-110-9632 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |