python open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。

语法

1
2
3
4
5
6
open(name[, mode[, buffering]])
# name : 一个包含了你要访问的文件名称的字符串值。

# mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

# buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

可用 mode 列表

  • r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
  • rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
  • r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
  • rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
  • w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
  • ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

file 对象方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。

file.readline():返回一行。

file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。

for line in f: print line :通过迭代器访问。

f.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。

f.write(["hello", "world"]):可以写入字符串列表

f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)。

f.seek(偏移量,[起始位置]):用来移动文件指针。
偏移量: 单位为比特,可正可负
起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾

f.close() 关闭文件

读取文件

1
2
3
4
5
6
7
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy([email protected])

f = open('test.txt')
t = f.read()
f.close()

写入文件

1
2
3
4
5
6
7
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy([email protected])

f = open('test.txt', 'w+')
f.write("Hello World")
f.close()
03-16 23:42