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中集合的内建函数和内建方法学习教程
Aug 19 Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
Python进阶之@property动态属性的实现
Apr 01 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
django 通过URL访问上传的文件方法
Jul 28 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 Python
python中最小二乘法详细讲解
Feb 19 Python
python 实现定时任务的四种方式
Apr 01 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
JavaScript静态的动态
2006/09/18 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
JS实现百度搜索框
2021/02/25 Javascript
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
python如何实现内容写在图片上
2018/03/23 Python
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
高三英语教学反思
2014/01/13 职场文书
学生宿舍管理制度
2014/01/30 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
投标邀请书范本
2015/02/02 职场文书
考研导师推荐信范文
2015/03/27 职场文书
小学家长意见怎么写
2015/06/03 职场文书
英语读书笔记
2015/07/02 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis