所谓属性,就是能够通过一个文件对象得到的东西。
>>> f = open("m1.txt","a") >>> f.name 'm1.txt' >>> f.mode #显示当前文件打开的模式 'a' >>> f.closed #文件是否关闭,如果关闭,返回True;如果打开,返回False False >>> f.close() #关闭文件的内置函数 >>> f.closed True以上关于文件状态和文件属性的内容,在对文件的某些方面进行判断和操作的时候或许会用到。特别是文件属性。比如在操作文件的时候,我们经常要首先判断这个文件是否已经关闭或者打开,就需要用到file.closed这个属性来判断了。
实验:
>>> f = open("m1.txt","r") >>> f.read() 'My name is hiekay.\nMy website is hiekay.github.io\nAha,I like program\n' >>>file.read()能够将文件中的内容全部读取过来。特别注意,这是返回一个字符串,而且是将文件中的内容全部读到内存中。试想,如果内容太多是不是就有点惨了呢?的确是,千万不要去读大个的文件。
>>> contant = f.read() >>> type(contant) <type 'str'>如果文件比较大了,就不要一次都读过来,可以转而一行一行地,用readline
>>> f = open("m1.txt","r") >>> f.readline() #每次返回一行,然后指针向下移动 'My name is hiekay.\n' >>> f.readline() #再读,再返回一行 'My website is hiekay.github.io\n' >>> f.readline() 'Aha,I like program\n' >>> f.readline() #已经到最后一行了,再读,不报错,返回空 ''读多行,readlines()
>>> f = open("m1.txt","r") >>> cont = f.readlines() >>> cont ['My name is hiekay.\n', 'My website is hiekay.github.io\n', 'Aha,I like program\n'] >>> type(cont) <type 'list'> >>> for line in cont: ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program从实验中我们可以看到,readlines和read有一样之处,都是将文件内容一次性读出来,存放在内存,但是两者也有区别,read返回的是str类型,readlines返回的是list,而且一行一个元素,因此,就可以通过for逐行打印出来了。
在print line中,注意观察list里面的每个元素,最后都是一个\n结尾,所以打印的结果会有空行。
对付大点的文件,推荐这么做:
>>> f = open("m1.txt","r") >>> f <open file 'm1.txt', mode 'r' at 0xb757c230> >>> type(f) <type 'file'> >>> for line in f: ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program以上都是读文件的内置函数和方法。除了读,就是要写。所谓写,就是将内容存入到文件中。用到的内置函数是write。但是,要写入文件,还要注意打开文件的模式,可以是w,也可以是a,看具体情况而定。
>>> f = open("m1.txt","a") #因为这个文件已经存在,我又不想清空,用追加的模式 >>> f.write("There is a baby.") #这句话应该放到文件最后 >>> f.close() #请看官注意,写了之后,一定要及时关闭文件。才能代表真正写入看看写的效果:
>>> f = open("m1.txt","r") >>> for line in f.readlines(): ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program There is a baby. #果然增加了这一行以上是关于文件的基本操作。高级 : pickle这个模块,是一个很好用的东西。