文件读写

一、文件打开open

  文件打开针对当前的工作目录。

  可以使用os.chdir() 来改变工作目录

1.1 open的两种方式

  1.手动挡,需要手动关闭

f = open('1.py', 'r')
print(f.read())
f.close()

  2.自动挡,使用with管理上下文,自动关闭

with open('1.py', 'r') as f:
    print(f.read())

 

1.2 文件读写模式

# 基本三种模式
  r    以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
  w    以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建
  a    以只追加可写模式打开文件,并将文件指针指向文件尾部;如果文件不存在则创建
# 扩展模式
  r+    在r的基础上增加了可写功能,文件指针指向开头
  w+    在w的基础上增加了可读功能, w+,跟w一样,增加了可读功能。
  a+    在a的基础上增加了可读功能,不管文件指针在哪,都移到末尾
在上面这几种模式中,都可以混搭一个b模式,以二进制的方式进行读写。
保证在扩平台或其他操作,读写正确。 在lunux下会忽略b,默认就是二进制读取

 

二、文件读操作

2.1  read()

  直接read(),获取全部,一次性存入内存中。返回一个字符串。 针对大文件出错

2.2 read(size)

  指定size读取,可以解决大文件读取出错。

while True:
    block = f.read(1024)
    if not block:
        break

 

2.3 readline()

  每次读取一行

while True:
    line = f.readline()
    if not line:
        break

 

2.4 readlines():

  读取全部的行,构成一个list,通过list来对文件进行处理,但是这种方式依然会造成MemoyError

for line in f.readlines():
    ....

 

2.5 使用文件描述符,可迭代对象

with open(filename, 'r') as flie:
    for line in file:
        ....

 

 

三、文件写操作

  写操作就比较的简单了,两种方法

3.1 write()

  参数为字符串

3.2 writeline()

  参数为一个序列,比如列表

 

四、文件定位

with open('2.py', 'w+', encoding='utf-8') as f:
    f.write('我是中国人')
    print(f.tell())     # 使用字节来计算,一个汉字3字节,输出15
    f.seek(0)
    print(f.read(3))    # 使用字符来计算,输出 '我是中',因为读的时候有空格或其他符号(1个字节会错乱)

 

posted @ 2018-05-19 22:19  娄先生  阅读(441)  评论(0编辑  收藏  举报
levels of contents