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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Python代理抓取并验证使用多线程实现
May 03 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 Python
python装饰器实例大详解
Oct 25 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
Python随机数函数代码实例解析
Feb 09 Python
Python发送手机动态验证码代码实例
Feb 28 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
手把手教你配置JupyterLab 环境的实现
Feb 02 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
phpMyadmin 用户权限中英对照
2010/04/02 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
禁止你的左键复制实用技巧
2013/01/04 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
利用python在excel中画图的实现方法
2020/03/17 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
实习生单位鉴定意见
2013/12/04 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
新闻通讯稿模板
2015/07/22 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
Nginx配置根据url参数重定向
2022/04/11 Servers
方法汇总:Python 安装第三方库常用
2022/04/26 Python