Python学习笔记——文件对象和操作(1)
2012-12-09 14:28
627 查看
Python的文件处理和相关输入输出能力。介绍文件对象(它的内建函数,内建方法和属性),标准文件,同时讨论文件系统的访问方法,文件执行,以及相关文件模块。
一,内建函数open()和file()
语法:file_object = open(fiel_name,access_mode=’r’, buffering=-1)
File_name是要打开的文件名字的字符串,可以使相对路径或者绝对路径,access_mode可选参数,表示文件打开的模式,’r’,’w’,’a’分别代表读取,写入和追加。还有个’U’模式,代表通用换行符支持。
‘r’或者’U’模式打开的文件必须是已经存在的,使用’w’模式打开的文件若存在则首先清空,然后重新创建。以’a’模式打开的文件是为追加数据准备的,所有写入数据都将追加到文件的末尾。
另一个可选参数buffering用于指示访问文件所采用的缓冲方式,0表示不缓冲,1表示缓冲一行数据,大于1代表用给定值作为缓冲区大小,不提供参数或者负值代表使用系统默认缓冲机制。
File()和open()的用法相同。
二,文件内建方法:
1 输入
read()方法用来直接读取字节到字符串中,可以指定读取数目,默认是文件将被读取直至末尾。
readline()读取打开文件的一行,包括行结束符,也可选size参数,默认为-1,代表直至读到行结束符。
readlines()不和前两个一个返回一个字符串,它会读取所有行然后把它们作为一个字符串列表返回,有一个可选参数sizhint代表返回的最大字节大小。
2 输出
write()内建方法功能与read()和readline()相反,它把含有文本数据或二进制数据块的字符写到文件中去。
和readlines()一样,writelines()方法是针对列表的操作,它接受一个字符串列表作为参数,将它写入文件,行结束符不会自动加入,所以如果需要的话,你必须在调用writelines()前给每行结尾加上行结束符。
3 文件内移动 seek()
seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表对于某个位置偏移量,位置的默认值为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起。和C语言总的fseek()类似。
下面看看几个例子:
filename = raw_input('Enter file name:')
f = open(filename,'r')
allLines = f.readlines()
f.close()
for eachLine in allLines:
print eachLine,
这个例子是读取一个文件的内容,但是是先把文件的所有内容读到allLines后,在把它一行一行的通过for循环打印出来。
下面看看用文件迭代器的方法:
filename = raw_input('Enter file name:')
f = open(filename,'r')
for eachLine in f:
print eachLine,
f.close()
这个思路是读一行显示一行,
注意:print语句默认在输出内容末尾加一个换行符,在其后面加一个逗号就可以避免这个行为,readline()和readlines()不会对行里的空白字符做任何处理,如果我们不加逗号的话,那么显示的文本每行后都会有两个换行符,一个是附带的,另一个是print语句自动添加的。
下面看两个例子:
第一个:
import os
filename = raw_input('Enter filename:')
fobj = open(filename,'w')
while True:
aLine = raw_input("Enter a line('.' toquit):")
if aLine !=".":
fobj.write('%s%s' %(aLine,os.linesep))
else:
break
fobj.close()
这是往文件中写,每次写一行,如果输入’.’,则结束。关键是每一行结束我们要加一个换行符,这里用到了os模块中的linesep ,它是用于文件中分隔行的字符串,这样就方便了我们,我们可以不必去关心当前系统所支持的换行符是什么,os模块会自动选择合适的换行符。
第二个例子:以可读可写模式创建一个新的文件,在向文件写入数据后,我们使用seek()方法在文件内部移动,使用tell()方法展示我们的移动过程。
>>> f =open('c:/Python26/code/test.txt','w+')
>>> f.tell()
0L
>>> f.write('test line1\n')
>>> f.tell()
13L
>>> f.write('test line2\n')
>>> f.tell()
26L
>>> f.seek(-13,1)
>>> f.tell()
13L
>>> f.readline()
'test line 2\n'
>>> f.seek(0,0)
>>> f.readline()
'test line 1\n'
>>> f.tell()
13L
>>> f.readline()
'test line 2\n'
>>> f.tell()
26L
>>> f.close()
>>>
一,内建函数open()和file()
语法:file_object = open(fiel_name,access_mode=’r’, buffering=-1)
File_name是要打开的文件名字的字符串,可以使相对路径或者绝对路径,access_mode可选参数,表示文件打开的模式,’r’,’w’,’a’分别代表读取,写入和追加。还有个’U’模式,代表通用换行符支持。
‘r’或者’U’模式打开的文件必须是已经存在的,使用’w’模式打开的文件若存在则首先清空,然后重新创建。以’a’模式打开的文件是为追加数据准备的,所有写入数据都将追加到文件的末尾。
另一个可选参数buffering用于指示访问文件所采用的缓冲方式,0表示不缓冲,1表示缓冲一行数据,大于1代表用给定值作为缓冲区大小,不提供参数或者负值代表使用系统默认缓冲机制。
File()和open()的用法相同。
二,文件内建方法:
1 输入
read()方法用来直接读取字节到字符串中,可以指定读取数目,默认是文件将被读取直至末尾。
readline()读取打开文件的一行,包括行结束符,也可选size参数,默认为-1,代表直至读到行结束符。
readlines()不和前两个一个返回一个字符串,它会读取所有行然后把它们作为一个字符串列表返回,有一个可选参数sizhint代表返回的最大字节大小。
2 输出
write()内建方法功能与read()和readline()相反,它把含有文本数据或二进制数据块的字符写到文件中去。
和readlines()一样,writelines()方法是针对列表的操作,它接受一个字符串列表作为参数,将它写入文件,行结束符不会自动加入,所以如果需要的话,你必须在调用writelines()前给每行结尾加上行结束符。
3 文件内移动 seek()
seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表对于某个位置偏移量,位置的默认值为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起。和C语言总的fseek()类似。
下面看看几个例子:
filename = raw_input('Enter file name:')
f = open(filename,'r')
allLines = f.readlines()
f.close()
for eachLine in allLines:
print eachLine,
这个例子是读取一个文件的内容,但是是先把文件的所有内容读到allLines后,在把它一行一行的通过for循环打印出来。
下面看看用文件迭代器的方法:
filename = raw_input('Enter file name:')
f = open(filename,'r')
for eachLine in f:
print eachLine,
f.close()
这个思路是读一行显示一行,
注意:print语句默认在输出内容末尾加一个换行符,在其后面加一个逗号就可以避免这个行为,readline()和readlines()不会对行里的空白字符做任何处理,如果我们不加逗号的话,那么显示的文本每行后都会有两个换行符,一个是附带的,另一个是print语句自动添加的。
下面看两个例子:
第一个:
import os
filename = raw_input('Enter filename:')
fobj = open(filename,'w')
while True:
aLine = raw_input("Enter a line('.' toquit):")
if aLine !=".":
fobj.write('%s%s' %(aLine,os.linesep))
else:
break
fobj.close()
这是往文件中写,每次写一行,如果输入’.’,则结束。关键是每一行结束我们要加一个换行符,这里用到了os模块中的linesep ,它是用于文件中分隔行的字符串,这样就方便了我们,我们可以不必去关心当前系统所支持的换行符是什么,os模块会自动选择合适的换行符。
第二个例子:以可读可写模式创建一个新的文件,在向文件写入数据后,我们使用seek()方法在文件内部移动,使用tell()方法展示我们的移动过程。
>>> f =open('c:/Python26/code/test.txt','w+')
>>> f.tell()
0L
>>> f.write('test line1\n')
>>> f.tell()
13L
>>> f.write('test line2\n')
>>> f.tell()
26L
>>> f.seek(-13,1)
>>> f.tell()
13L
>>> f.readline()
'test line 2\n'
>>> f.seek(0,0)
>>> f.readline()
'test line 1\n'
>>> f.tell()
13L
>>> f.readline()
'test line 2\n'
>>> f.tell()
26L
>>> f.close()
>>>
相关文章推荐
- Python 学习笔记——文件对象和操作
- Python学习笔记——文件对象和操作(2)
- python 学习笔记(一)—目录文件的操作
- python学习笔记4-python文件操作
- Python学习笔记(八)——有关文件的操作
- Python学习笔记015——文件file的常规操作之四(输入重定向)
- python 系统学习笔记(八)---文件操作
- python 系统学习笔记(八)---文件操作
- Python学习笔记之简单文件操作
- Python学习笔记3-文件的简单操作
- 3.python学习笔记:python对文件的操作
- Python学习笔记——文件操作、综合应用
- Python学习笔记3:简单文件操作
- python文件操作学习笔记
- python学习笔记三之文件操作(基础篇)
- Python3学习笔记10-标准库之正则、时间、路径、文件管理、存储对象
- python学习笔记17:文件操作
- Python学习笔记--文件操作
- Python学习笔记(1)—文件操作
- python学习笔记6—文件操作来生成船只侧面图像的描述文件