python入门系列9―——文件处理
来源:互联网 发布:aphex twin 知乎 编辑:程序博客网 时间:2024/06/05 14:25
欢迎前往我的个人博客
python 提供了file对象来对文件操作。
打开文件:open函数,此函数会创建一个file对象,然后通过相关函数进行调用
格式:
file object = open(file_name [, access_mode][, buffering])各参数如下:
file_name:包含路径的文件名
access_mode:打开文件的模式,包括只读,写入,追加等。默认文件访问模式为只读(r)。
buffering:为0表示不会有寄存。为1表示访问文件时会寄存行。如果设为大于1的整数,表示寄存区的缓冲大小。负值为默认。
打开模式包含:
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
我们可以来个例子看下:
首先创建一个hello.txt,内容如下:
hellopython1+1=2www.baidu.com
然后同目录创建一个python文件。具体代码如下:
f = open("hello.txt")print "文件名: ", f.nameprint "是否已关闭 : ", f.closedprint "打开模式 : ", f.mode结果:
文件名: hello.txt是否已关闭 : False访问模式 : r
有打开文件就有关闭文件,这个时候我们就要使用close()函数。
f.close()
当我们需要读取文件的内容的时候,我们就要用到read()函数:
f = open("hello.txt")print f.read()如果想读取指定长度,可以使用read(长度)
f = open("hello.txt")print f.read(8)
如果想写入内容,就要用到write()函数
格式:
f.write(string)注意,要想写入,就需要打开模式设置成可以写入的才行,因为默认是只读所以这个时候调用write会报错
f = open("hello.txt")f.write( "replace python");提示:
Traceback (most recent call last):
File "D:\Python27\Mytest\test.py", line 2, in <module>
f.write( "replace python");
IOError: File not open for writing
所以改成
f = open("hello.txt","w+")f.write( "replace python");f.close()如果需要写入多次只需要多次调用write函数即可,多行的话需要字符串后跟上转义符"\n",表示换行
f.write( "replace python1\n");
之前我们使用过read(长度),如果这时候再调用read()会是什么效果?
我们先把hello.txt改成:
replace python1replace python2replace python3replace python4代码如下:
f = open("hello.txt")print f.read(10)print ""print f.read()f.close()结果
replace python1replace python2replace python3replace python4第二个read是接着之前的内容读取的,如果想输出全部内容,就需要重新定位。
查看当前位置可以使用tell()
移动当前位置可以使用seek(offset [,from]),Offset变量表示要移动的字节数,From变量指定开始移动字节的参考位置
例如:
f = open("hello.txt")print f.read(10)print "当前位置",f.tell()f.seek(0,0) #当前位置设置成开头print f.read()f.close()结果:
replace py当前位置 10replace python1replace python2replace python3replace python4
文件的删除和重命名
这2个操作,需要带入os模块
重命名使用rename(),该函数需要两个参数,当前的文件名和新文件名。
删除使用remove(),该方法需要一个参数,文件名。
例如:
import osos.rename( "test1.txt", "test2.txt" )
import osos.remove("test2.txt")
我们能对文件操作,那么使用python同样可以对文件夹操作,os模块提供了函数
例如:
import os# 创建目录testdiros.mkdir("testdir")# 进入testdir目录os.chdir("testdir")# 查看testdir路径print os.getcwd()输出:
D:\Python27\Mytest\testdir那么我们可以根据这个路径删除目录:
import osos.rmdir("D:/Python27\Mytest/testdir")注意斜杠和反斜杠哦
- python入门系列9―——文件处理
- python入门系列11―——异常处理
- python入门系列19―——GUI wxpython入门
- python入门系列20―——GUI Tkinter入门
- python入门系列1―——helloworld
- python入门系列2―——运算符
- python入门系列3―——数据类型
- python入门系列4―——语句
- python入门系列5―——时间日期
- python入门系列6―——函数
- python入门系列7―——模块
- python入门系列8―——I/O
- python入门系列12―——面向对象
- python入门系列10―——Excel操作
- python入门系列16―——格式化
- python入门系列16―——正则表达式1
- python入门系列14―——随机数
- python入门系列15―——shelve
- EffectiveC++学习笔记-条款20|21
- 【转】Matlab的各种数据读取、文件读写等操作汇总
- iOS基石——UITextField
- 【opencv】动态背景下运动目标检测 FAST+SURF+FLANN配准差分 17/12/13更新图片
- 使用TCP协议连续传输大量数据时,是否会丢包,应如何避免
- python入门系列9―——文件处理
- DateUtilt
- Android 中无法取消标题栏的问题,requestWindowFeature(Window.FEATURE_NO_TITLE);无效
- IntelliJ Idea 常用快捷键
- Android webview内存泄漏问题的解决
- ubuntu16使用命令
- VMware虚拟机克隆CentOS后网卡修改方法
- 如何避免面板弹出重叠
- 跨域资源共享 CORS 详解