自学python系列:7:文件和输入输出
1.1文件对象
不仅可访问普通的磁盘文件,可访问任何其他类型抽象层面上的“文件”。
“类文件”对象的情况。例如,打开一个URL读取web页面。
1.2文件内建函数 (open(),file())
内建函数open()和file()提供初始化输入/输出操作的通用接口。当open()内建函数成功打开文件后会返回一个文件对象,否则引发错误。当操作失败,python会产生一个IOerror。
基本语法:
file_object=open(file_name,access_mode='r',buffering=-1)
file_name是要打开的文件名字的字符串,可是相对路径或绝对路径。可选变量access_mode也是一个字符串。文件模式“r”。“w”,“a”,读取,写入和追加。
1.2.1 工厂函数file()
open()和file有相同的功能,可以任意替换。
一般来说,我们建议使用open()来读写文件,在你想说明你在处理文件对象时使用file().
1.2.2通用换行符支持(UNS)
1.3文件内建方法
文件方法有四类:输入,输出,文件内移动及杂项操作
1.3.1输入
>>> fp=file(r'E:\test.txt','r')
>>> fp.read()
'1\n2\n3\n4\n5'
>>> fp.read()
'1\n2\n3\n4\n5'
>>> fp=file(r'E:\test.txt','r')
>>> fp.readline()
'1\n'
>>> fp=file(r'E:\test.txt','r')
>>> fp.readlines()
['1\n', '2\n', '3\n', '4\n', '5']
>>> fp.readline()
'1\n'
>>> fp=file(r'E:\test.txt','r')
>>> fp.readlines()
['1\n', '2\n', '3\n', '4\n', '5']
1.3.2输出
write()内建方法与read(),readline()相反。
>>> fp=file(r'E:\test.txt','r+')
>>> fp.write('c')
>>> fp.close()
>>> fp.write('c')
>>> fp.close()
和readlines()一样,writelines()方法是针对列表的操作,它操作一个字符串列表作为参数,将它们写入文件。行结束符不会被自动加入,若需要,得在调用writelines()前给每行结尾加上行结束符。
1.3.3文件内移动
1.3.4文件迭代
见python迭代,有关文件的输入输出
1.3.5其他
close()通过关闭文件来结束对它的访问。python垃圾收集机制也会在文件对象的引用计数降至零的时候自动关闭文件。
fileno()返回打开文件的描述符。
>>> fp=file(r'E:\test.txt','r+')
>>> fp.fileno()
4
>>> fp.fileno()
4
1.3.6文件方法杂项
注意:print语句默认在输出内容末尾后加一个换行符,而在语句后加一个逗号就可以避免了。readline()和readlines()函数不对行里的空白字符做任何处理,所以有必要加上逗号。否则又两个换行符,一个是输入是附带的,另一个是print语句自动添加的
>>> fp=file(r'E:\test.txt','r+')
>>> for a in fp:
print a
c
2
3
4
5
>>> fp=file(r'E:\test.txt','r+')
>>> for a in fp:
print a,
c
2
3
4
5
>>>
>>> for a in fp:
print a
c
2
3
4
5
>>> fp=file(r'E:\test.txt','r+')
>>> for a in fp:
print a,
c
2
3
4
5
>>>
核心笔记:行分隔符和其他文件系统的差异
以下来看1.如何输出到文件 2.展示了文件的输出和输入,以及文件定位seek()和tell()的使用
第二个例子:
1.4文件内建属性
1.5标准文件
一般来说,只要程序一执行,就可以访问3个标准文件。
标准输入:stdin raw_input()接收输入
标准输出:stdout print
标准错误:stderr
python可以通过sys这些文件的句柄
1.6命令行参数
核心技术p244
1.7文件系统
对文件系统的访问大多通过python的os模块实现。
posix:适用于unix系统
nt:win32
mac“macos
dos:DOS
os2:OS
1.8文件执行
见14章
1.9永久存储模块
关系数据库管理RDBMS
1.9.1 pickle和marshal模块
1.9.2DBM风格的模块
dumbdbm模块是功能最少的一个。
1.9.3shelve模块