Python文件和目录操作详解


Posted in Python onFebruary 08, 2015

一、文件的打开和创建

1、打开

open(file,mode):
>>>fo = open('test.txt', 'r')

>>>fo.read()

'hello\n'

>>>fo.close()

file(file,mode):
>>>f = file('test.txt', 'r')

>>>f.read()

'hello\n'

>>>f.close()

mode可取值:

Python文件和目录操作详解

2、创建

用w/w+/a/a+模式打开即可。

二、文件的读取
1、String = FileObject.read([size])

>>> fr = open('test.txt')

>>> fr.read()

'hello\nworld\n'

or:
>>> for i in open('test.txt'):

...     print i

... 

hello
world

2、String = FileObject.readline([size])
>>> f = open('test.txt')

>>> f.readline()

'hello\n'

>>> f.readline()

'world\n'

>>> f.readline()

''

或者可以用next

3、List = FileObject.readlines([size])

>>> f = open('test.txt')

>>> f.readlines()

['hello\n', 'world\n']

三、文件的写入

1、write(string)

>>> f = open('test.txt', 'a')

>>> f.write('hello\nworld')
#'hello\nworld'

2、writelines(list)

>>> l = ['a','b','c']

>>> f=open('test.txt','a')

>>> f.writelines(l)
#'hello\nworldabc'

注:writelines相当于调用了多次write,不会自动添加换行(\n)符

四、内容查找替换

1、FileObject.seek(offset, mode)

offset:偏移量

mode:
0表示将文件指针指向从文件头部到“偏移量”字节处,
1表示将文件指针指向从文件当前位置向后移动“偏移量”字节,
2表示将文件指针指向从文件尾部向前移动“偏移量”字节。

>>> f=open('test.txt')

>>> f.read()

'hello\nworldabc'

>>> f.read()

''

>>> f.seek(0,0)

>>> f.read()

'hello\nworldabc'

>>> f.close()

2、flush:提交更新,即在文件关闭之前把内存中的内容强制写入文件(一般是文件关闭后写入)

3、文件查找:遍历行进行查找

#!/usr/bin/python

import re
search='hello world'

file='test.txt'

count = 0

f = open(file)

for l in f.readlines():

    li = re.findall(search,l)

    if len(li) > 0:

        count += len(li)

print "Search " + str(count) + " \"" + search + "\""

f.close()

4、文件内容替换:遍历行进行替换

替换到新文件demo:

#!/usr/bin/python
os='hello'

of='test.txt'
rs='ten'

rf='test2.txt'
ofh = open(of)

newl=[]

for l in ofh.readlines():

    nl = l.replace(os,rs)

    newl.append(nl)
rfh = open(rf,'w+')

rfh.writelines(newl)

ofh.close()

rfh.close()

替换到原文件demo:
[server@localserver file]$ cat test.txt 

abc

hello

world

hello world

helloworld

hello hello world

[server@localserver file]$ cat fr.py 

#!/usr/bin/python
os='hello'

file='test.txt'
rs='ten'
f = open(file, 'r+')

s=f.read()

f.seek(0,0)

f.close()

f = open(file, 'w+')

f.write(s.replace(os,rs))

f.close()

[server@localserver file] python fr.py

[server@localserver file]$ cat test.txt 

abc

ten

world

ten world

tenworld

ten ten world

这里采用了重建文件的办法。

或用 fileinput 模块直接在原文件上修改:

#!/usr/bin/python

import fileinput
os='hello'

file='test.txt'
rs='ten'
for line in fileinput.input(file, inplace=True):

    print line.replace(os,rs).replace('\n','')

注意,这里删除了\n是因为print时会写入换行。

五、文件及目录操作

一般是借助OS模块实现

1、mkdir(path[,mode=0777]):创建目录,相当于mkdir

>>>import os

>>>os.mkdir('tt')

2、makedirs(name[, mode=511]):创建多级目录,相当于mkdir -p

3、rmdir(path):删除目录,相当于rm

4、removedirs(path):删除多级目录,相当于rm -rf

5、listdir(path):列出目录中文件和文件夹,相当于ls

6、getcwd():获取当前路径,相当于pwd

7、chdir(path):切换目录,相当于cd

8、rename(src, dst):重命名

9、shutil.copyfile(str,dst):复制文件(要引入shutil模块)

10、path.splitext(filename):获取文件路径和扩展名

>>> import os

>>> fileName, fileExtension = os.path.splitext('/path/to/somefile.ext')

>>> fileName

'/path/to/somefile'

>>> fileExtension

'.ext'

11、walk(top, topdown=True, onerror=None):遍历目录

>>> import os

>>> g = os.walk('a')

>>> g.next()

('a', ['b'], [])

>>> g.next()

('a/b', ['f', 'c'], [])

>>> g.next()

('a/b/f', [], ['3.txt'])

>>> g.next()

('a/b/c', ['d', 'e'], [])

>>> g.next()

('a/b/c/d', [], ['1.txt'])

>>> g.next()

('a/b/c/e', [], ['2.txt'])

walk返回的是一个生成器,生成器中的内容是:当前目录,目录列表,文件列表

python自己递归实现文件遍历:

#!/usr/bin/python

import os
def dirList(path):

    filelist = os.listdir(path)

    fpath = os.getcwd()

    allfile = []

    for filename in filelist:

        filepath = os.path.abspath(os.path.join(path, filename))

        if os.path.isdir(filepath):

            allfile.extend(dirList(filepath))

        else:

            allfile.append(filepath)

    return allfile
files = dirList('a')

print files
Python 相关文章推荐
python实现的jpg格式图片修复代码
Apr 21 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
Python paramiko模块的使用示例
Apr 11 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
Jul 09 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 Python
Python中操作MySQL入门实例
Feb 08 #Python
Python Web框架Flask下网站开发入门实例
Feb 08 #Python
Python中使用wxPython开发的一个简易笔记本程序实例
Feb 08 #Python
Python常用的日期时间处理方法示例
Feb 08 #Python
Python中使用PIL库实现图片高斯模糊实例
Feb 08 #Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 #Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 #Python
You might like
PHP的FTP学习(四)
2006/10/09 PHP
php程序之die调试法 快速解决错误
2009/09/17 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
php post换行的方法
2020/02/03 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
javascript下查找父节点的简单方法
2007/08/13 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
一篇不错的Python入门教程
2007/02/08 Python
Python httplib,smtplib使用方法
2008/09/06 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python sys.argv用法实例
2015/05/28 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Python全局变量用法实例分析
2016/07/19 Python
python difflib模块示例讲解
2017/09/13 Python
python书籍信息爬虫实例
2018/03/19 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
日语专业推荐信
2013/11/12 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
信息总监管理职责范本
2014/03/08 职场文书
教师产假请假条
2014/04/10 职场文书
大连星海广场导游词
2015/02/10 职场文书
创业计划书之花店
2019/09/20 职场文书