Python使用os模块和fileinput模块来操作文件目录


Posted in Python onJanuary 19, 2016

os模块
在python编程中,我们会经常使用到文件和目录,这些操作python提供一个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使用'\r\n',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模块可以遍历文本文件的所有行.它的工作方式和readlines很类似,不同点在于,它不是将全部的行读到列表中而是创建了一个xreadlines对象.

下面是fileinput模块中的常用函数

  • input() #它会返回能够用于for循环遍历的对象.
  • filename() #返回当前文件的名称
  • lineno() #返回当前(累计)的行数
  • filelineno() #返回当前文件的行数
  • isfirstline() #检查当前行是否是文件的第一行
  • close() #关闭序列
>>> 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
Python 相关文章推荐
python实现的阳历转阴历(农历)算法
Apr 25 Python
python django集成cas验证系统
Jul 14 Python
python实现聚类算法原理
Feb 12 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
详细分析Python垃圾回收机制
Jul 01 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
Django自带的用户验证系统实现
Dec 18 Python
Python关于拓扑排序知识点讲解
Jan 04 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 #Python
python结合API实现即时天气信息
Jan 19 #Python
Python+django实现文件下载
Jan 17 #Python
Python+django实现文件上传
Jan 17 #Python
初步剖析C语言编程中的结构体
Jan 16 #Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 #Python
python实现发送和获取手机短信验证码
Jan 15 #Python
You might like
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
基于jQuery的js分页代码
2010/06/10 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
django表单的Widgets使用详解
2019/07/22 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
联强国际笔试题面试题
2013/07/10 面试题
财务工作者先进事迹材料
2014/01/17 职场文书
村捐赠仪式答谢词
2014/01/21 职场文书
碧霞祠导游词
2015/02/09 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python