python第五堂课:文件的读写

五一几天在搬家。帝都屁民的悲哀。

接触过一些语言,shell,python,php等,发现基本上所有的语言类的教程和教学都是,输出,字符串,用户输入,文件控制,语句逻辑以及其他。

前面已经提过,输出,字符串,用户输入了,今天来搞搞文件控制。

文件控制整体可以分为以下几种动作,读,写,追加。

python的读写都是通过一种file object 来实现的,

当以读模式进行打开文件时,文件处于只读状态,不会变更文件内容。

当以写模式进行打开文件时,如果有文件,则置空,再往里面写。没有对应的文件,则进行创建。

当以追加模式打开文件时,如果有文件,则与文件末尾处,进行追加内容,没有对应文件的时候,则进行创建。

例子1:文件的读。

#!/bin/env python
#-*- encodeing:utf-8 -*-
from sys import argv
#使用argv读取用户指定的目录, script,file
= argv
#建立文件对象,是打开file变量代表的文件。 fo
= open(file)
#以读模式打开文件通常是需要输出或这进行处理的。fo.read()是读出全部内容。 fo.read()
#close是关闭fo这个文件对象。如果文件没有关闭之前,是可以重复进行操作的。 fo.close() 我使用python exp3.py file输出了以下内容
'c'

这里的open的用法是这样的:

open(文件名称,[模式,buffer])

buffer为缓冲区的大小,0为不缓冲,1为缓冲,>=1,则指定缓冲区的大小。

例子2:文件的写。

#!/bin/env python
#-*- encodeing:utf-8 -*-
from sys import argv
script,file = argv
#获取用户输入的文件名 fo
= open(file,'w')
#以下两行为输出到file中的两种方法,1使用文件对象中的write属性,将输入内容输出到文件当中,print 是我忘记从哪儿看到了。呵呵 fo.write(
"hello world!\n")
print >> fo,"hello world kairong"
#这里如果你设置了缓冲区,如果缓冲区没有打满的情况下,这些输入作为临时输入储存在缓冲区中,可以通过fo.flush()强行写入。关闭文件时,会将缓冲区内容写入到文件。
fo.close() #打开查看。 fo = open(file,'r') fo.read()


使用方法是,python exp4.py file
输出内容为:
hello world!
hello world kairong

文件的追加方法,类同写的方式。这里就不举例了。

就文件打开的模式说明下:

r,只读模式,如果你没有选择任何打开模式则打开的是只读模式。

w,写模式,

a,追加模式。

b,以二进制文件打开。

关于文件对象的操作方法和方式有以下几种:

fo.close() 关闭文件,顺便把缓冲区的内容写入文件,如果有缓冲区的话。

fo.read()读取,如果read()内没加任何变量,则读出全部内容,如果类似与fo.read(1),则读取当前位置的一个字符。

>>> file.read()
'hello world\n'
>>> file.seek(0,0)
>>> file.read(1)
'h'
>>> file.read(2)
'el'

fo.readline()读取当前位置的一行内容。如果添加了任何参数。例如file.readline(1),则读取当前位置的一个字符。

fo.readlines()将文件所有内容追加到元组当中,如果添加了任何参数,例如file.readlines(1),则仅读取当前位置的一行内容。

我这里强调下,为什么要说当前位置呢,文件的读取是通过一种类似于游标的方式读取的,如果在文件头,则逐步读入,但是如果我想类似于读取文件最后一个字符的话,就可以将文件的游标重置到文件末尾。然后再继续。关于游标的使用,可以使用file.seek()进行操作,可以自己查看下seek的用法哦。file.tell()可以返回当前游标所处的位置。

fo.write("abc")将文件写入文件(或者缓冲区。)

fo.flush()将文件对象中的缓存写入文件。

fo.close()将文件对象关闭,并将缓存写入文件。

fo.truncate()清空文件。

原文地址:https://www.cnblogs.com/sageskr/p/3053573.html