文件操作

  1、文件路径:绝对路径和相对路径

'd:\study\user\day8\qwe' # 绝对路径
'qwe' # 相对路径

  2、编码方式:以什么编码方式存储就因该用什么编码方式读取,不然会乱码

  3、操作方式:只读,只写,读写,写读,追加······

 文件的打开与关闭

open('d:\study\user\day8\qwe', mode='r', encoding='utf-8')  # 绝对路径的打开文件
open('qwe', mode='r', encoding='utf-8')  # 相对路径的打开文件
f.close() # 文件的关闭

  在打开文件后应该注意及时关闭,释放内存空间,但为了避免忘记,可以使用with打开文件

with open('qwe', mode='r', encoding='utf-8') as f:
    pass

 文件的读

f = open('qwe', mode='r', encoding='utf-8')
s = f.read()
print(s)
f.close()

 以bytes类型读取

with open('qwe', mode='rb') as f:
    print(f.read())

 文件的写

with open('qwe', mode='w', encoding='utf-8') as f:
    f.write('看窗外的风景')

  以bytes类型读取

with open('qwe', mode='wb') as f:
    f.write('看窗外的风景'.encode('utf-8'))

 文件的追加

with open('qwe', mode='a', encoding='utf-8') as f:
    f.write(',窗外的风景在看你')

  以bytes类型追加

with open('qwe', mode='ab') as f:
    f.write(',窗外的风景在看你'.encode('utf-8'))

 文件的读写

with open('qwe', mode='r+', encoding='utf-8') as f:
    f.read()
    f.write(',孤独围绕着你')

  以bytes类型读写

with open('qwe', mode='r+b') as f:
    f.read()
    f.write(',孤独围绕着你'.encode('utf-8'))

 文件的写读

with open('www', mode='w+', encoding='utf-8') as f1:
    f1.write('aaaaaaaa')
    f1.seek(0)
    print(f1.read())

  以bytes类型写读省略

 文件的追加读或写

with open('www', mode='a+', encoding='utf-8') as f1:
    f1.write('bbb')
    f1.seek(0)
    print(f1.read())

 功能详解

  f.readline() 读取文件的一行,写一遍读一行

  f.readlines() 按行读取文件,读取所有行,将每行的字符串当成一个元素写入一个列表

  f.seek() 定位光标的位置,光标按字节定位,不是字符

  f.tell() 告诉你光标现在的位置

  f.truncate() 截取

with open('www', mode='w+', encoding='utf-8') as f1:
    f1.write('sdfasfasdfa')
    f1.truncate(5)
    f1.seek(0)
    print(f1.read())

  f.readable() 判断是否可读

  f.writeable() 判断是否可写

 文件的修改

  方法一:将文件全部读取到内存,在内存中是可以修改的,修改完后再覆盖到硬盘(文件内容不太多时使用)

import os
with open('www.txt', mode='r+', encoding='utf-8') as f1,\
    open('sss.txt.swap', mode='w+', encoding='utf-8') as f2:
    date = f1.read()
    date = date.replace('SB', 'haha')
    f2.write(date)
os.remove('www.txt')
os.rename('sss.txt.swap', 'www.txt')

  方法二:将文件一行一行的读入内存,修改完毕就写入新文件,最后用新文件覆盖新文件

import os
with open('www.txt', mode='r+', encoding='utf-8') as f1,\
     open('sss.txt.swap', mode='w+', encoding='utf-8') as f2:
    for line in f1:
        line = line.replace('ss', 'haha')
        f2.write(line)
os.remove('www.txt')
os.rename('sss.txt.swap', 'www.txt')

 

posted on 2018-10-13 15:54  幸福的小耗子  阅读(197)  评论(0编辑  收藏  举报