Python--file 的读写以及常用方法

来源:互联网 发布:高速微型数据连接器 编辑:程序博客网 时间:2024/06/10 17:32

今天开始学习file  的基本操作。

在Python中,不可避免的需要对实际数据文件进行读写等各种操作。

Python 提供了函数和方法对文件基本的操作。可以使用file对象做大部分的文件操作。

对文件进行操作需要按照如下步骤:

1. open 文件,2. 文件操作(读或写) 3. 关闭文件 这是基本要求。


1、file 打开文件

open()函数

作用:打开文件,创建一个file 对象。

语法: 

     file object = open(file_name [, access_mode][, buffering])

其中: file_name : 是一个包含了需要访问的文件名的字符串值。

            access_mode : 决定了打开文件的模式: 只读、写入、追加 ,默认文件访问模式是只读(r)

            buffering : if  buffering ==0 ,则不会寄存,bufferiing =1 ,文件会寄存行。if buffering>1 的整数,表明了寄存区的缓冲大小。if                             buffering <0 ,寄存区的缓冲大小为系统默认。

下面给出不同模式打开文件的列表:

模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。r+打开一个文件用于读写。文件指针将会放在文件的开头。rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。例如:

import codecsf=codecs.open('1.txt') //打开文件,默认为只读print (f.read())f.close()
11111112222222333333344444445555555
f=codecs.open('1.txt','rb')
file=codecs.open('4.txt','wb')

按照各自不同模式进行打开文件。

file 对象的属性:

当文件被打开后,就有了一个file 对象,可以获取file的各种相关信息。

先给出file的属性列表:

属性描述file.closed返回true如果文件已被关闭,否则返回false。file.mode返回被打开文件的访问模式。file.name返回文件的名称。file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

例如:

import codecsf=codecs.open('1.txt','rb')print (f.read())print (f.mode)print (f.name)print (f.softspace)print (f.closed)f.close()print (f.closed)

11111112222222233333333444444444rb1.txt0FalseTrueTrue


在上面用到了close() 方法

close () 关闭文件。

当一个文件对象的引用被重新制定给另外一个文件时,Python 会关闭之前的文件。

2. file读文件

1.read()  作用: 从一个打开的文件中读取一个字符串。

方法: file.read(count);

count: 是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。

import codecsf=codecs.open('1.txt','rb')print (f.read())f.close()
11111112222222233333333444444444


2. readlines()

作用:用于读取所以行(直到结束符EOF),并返回列表。该列表可由for 语句处理。

读取文件内容,文件内容的每一行都是一个字符串,最后返回一个list

语法:file.readlines()

返回值: 列表,包含所以行

例如:

1.txt 的内容如下:

11111112222222333333344444444555555555666666666
import codecsf=codecs.open('1.txt','rb')print (f.readlines())f.close()
结果:

['1111111\n', '2222222\n', '3333333\n', '44444444\n', '555555555\n', '666666666\n']
3. readline()

作用:用于从文件中读取一行,返回一个字符串。包括“\n”.如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符

语法:file.readline()

返回值: 返回从字符串中读取的字节

import codecsf=codecs.open('1.txt','rb')print (f.readline())f.close()
1111111
import codecsf=codecs.open('1.txt','rb')print (f.readline())print (f.readline())print (f.readline())print (f.readline())print (f.readline())f.close()
11111112222222333333344444444555555555
 从上面可以看出: readlines 与readline  的区别,readlines 主要是读取文件内容的所有内容,且,每一行都是一个字符串,最后返回一个list。 而readline是读取文件内容的某一行,返回一个字符串。

3、file 写文件

write()方法可以将任何字符串写入一个打开的文件。该方法不会再字符串的结尾添加换行符(“\n”)

语法: file.write(string)

string : 是要写入到已经打开文件的内容

import codecsf=codecs.open('1.txt','ab')f.write('hello python1\n')f.write('hello %s\n' % 'yansss')f.write('hello {0}\n'.format('ssssss'))f.write('hello python3\n')f.close()
另外,1.txt 内容如下:

111111111222222223333333344444444455555555
f=open('1.txt','wb')f.write('wwww.run\nvery good\n\hello python\n')f.close()
在此查看1.txt:

wwww.runvery good\hello python

2.writelines()

作用: 用于向文件中写入一序列的字符串。这一序列字符串可以是迭代对象产生的,如字符串列表。换行需制定换行符\n

语法:file.writlines(str)

str--要写入的字符串序列

返回值: 无

import codecsf=codecs.open('5.txt','wb')f.writelines(['abdc\n','dddd\n','ddhdh\n'])f.close()
结果5.txt 内容如下:

abdcddddddhdh

以上可以看出,writelines 必须传入一个序列,即列表,write 必须传入的是字符串。


4. file 常用方法

1.flush()用来刷新缓冲区,即将缓冲区的内容立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区

一般,文件关闭后自动刷新缓冲区。但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法

语法:file.flush()

返回值:无

import codecsf=codecs.open('5.txt','rb')print (f.name)f.flush()f.close()
5.txt
2.tell ()

作用: 返回文件的当前位置,即文件指正当前位置

语法: file.tell(offset[, where])

返回值:文件位置

文件内容:

abdcddddddhdh
import codecsf=codecs.open('5.txt','rb')print (f.name)print (f.readline())print(f.tell())f.close()

结果:

5.txtabdc5
3.next()

作用:读取文件的下一行内容,返回一个字符串。

语法: file.next()

返回值: 返回文件的下一行

1.txt内容如下:

11111112222222333333344444444555555555666666666

import codecsf=codecs.open('1.txt','rb')print (f.name)print (f.readline())print (f.next())f.close()
结果:

1.txt11111112222222





原创粉丝点击