Python学习-文件操作

1.读文件

python使用open来打开数据流

data = open('data.txt')

下面是一个读取一个文件,然后逐行输出的代码:

try:
    data = open('data.txt')

    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(':',1)
            print (role, end='')
            print (' said: ', end='')
            print (line_spoken, end='')
        except ValueError:
            pass
    data.close()
except IOError:
    print("the datafile is mising!")

解释:对于data.txt文件,如果找到了“:”,就处理这一行,并切割成两部分,一部分为role,一部分为line_spoken,然后增加said逻辑,逐行输出。

2.写文件

默认地,open()使用模式r表示读,所以不需要专门制定r模式。要打开一个文件完成写,需要使用模式w:

out = open("data.out","w")

默认地,print()BIF显示数据时会使用标准输出,即屏幕。要把数据写至一个文件,需要使用file参数来制定所使用的数据文件对象:

print("hello xuxu!",file=out)

完成工作时一定要关闭文件,确保所有数据都写至磁盘。这成为刷新输出(flushing)

out.close()

温馨提示:


使用访问模式w时,python会打开指定的文件来完成写。如果这个文件已经存在,则会清空它的现有的内容,也就是完全清楚。要追加到一个文件,需要使用访问模式a。要打开一个文件来完成写和读(不清楚),需要使用w+。如果想打开一个文件完成写,但是这个文件并不存在,那么首先会为你创建一个文件,然后再打开文件进行写操作。


3.使用try/except/finally处理文件

try:
    data = open('its.txt',"w")
    print("It's ...", file=data)
except IOError as err:
    print('File error:' + str(err))
finally:
    if 'data' in locals():
        data.close()

4.使用with替换try/except/finally

由于处理文件时try/except/finally模式相当常用,所以python提供了一个语句来抽象出相关的一些细节。对文件使用with语句时,可以大大减少需要编写的代码量,因为有了with语句就不在需要包含一个finally组来处理文件的关闭,即妥善关闭一个可能打开的数据文件。如下:

try:
    with open('its.txt',"w") as data:
        print("It's ...", file=data)
except IOError as err:
    print('File error:' + str(err))

with语句利用了一种名为上下文管理协议(context management protocol)的python技术。

你可能感兴趣的:(Python)