• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论

os模块
在python编程中,我们会经常使用到文件和目录,本文来源gao.dai.ma.com搞@代*码#网这些操作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 4drwxr-xr-x 2 root root 4096 2013-03-29 17:27 py /root/test/py:total 00

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 fileinputfile.py is a fileoperate.py is a filehello.pyc is a fileuserpw.py is a file4.py is a fileanswer 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

[email protected]:~# cat telphone.log [email protected]:~# cat fileinputtest.py #!/usr/bin/python2.5 import fileinputimport sysimport 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')),[email protected]:~# ./fileinputtest.py ============line: 1 filename: /root/telphone.log length: 12 027-987-1212 ============line: 3 filename: /root/telphone.log length: 12 021-110-9632

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python使用os模块和fileinput模块来操作文件目录

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址