文件操作的流程

  1. 打开文件

    f = open(r'文件路径', 'w', encoding='字符编码')

  2. 读取/修改文件

    f.write('写入')

  3. 保存文件

    f.flush() # 快速保存

  4. 关闭文件

    f.close() # 告诉操作系统关闭文件

文件的三种打开模式

读取: rt read_text 针对文本内容只读

f = open(r'C:\Users\Black\Documents\Python learning\文件操作', 'rt', encoding='utf-8')

data = f.read()
print(data)
print(f.readable) # True
print(f.writable) # False print(f.readline()) # 读取一行, 光标移动一行
print(f.readlines()) # 读取所有行,生成列表(包括换行\n) # 循环读取一个个字符
for i in f.read():
print(i) # 循环读取一行行
for i in f:
print(i)

清空写入: wt write_text 针对文本内容只写

# 使用'w'模式在打开时候就会清空文件
f = open(r'C:\Users\Black\Documents\Python learning\文件操作', 'wt', encoding='utf-8') print(f.readable()) # False
print(f.writable()) # True f.write('写入') # 自动拼接列表元素
f.writeliens(['第一行\n', '第二行\n','第三行'])

追加写入: at append_text 针对文本内容只写

# 使用'a'模式打开时候光标会默认移动到文件尾
f = open(r'C:\Users\Black\Documents\Python learning\文件操作', 'at', encoding='utf-8') print(f.readable()) # False
print(f.writable()) # True f.write('追加写入')

PS: 'w'和'a'模式可以自动创建文件

文件的两种形式

文本形式: t

用于文本文件的处理

二进制形式: b

一般用于图片/音频/视频的保存(和r/w/a联用, 不需要encoding)

文件路径

绝对路径

就是文件的详细路径地址, 从盘符开始: C:\Users\Black\Documents\Python learning\文件操作

相对路径

当前运行文件(C:\Users\Black\Documents\Python learning\test.py')的文件夹下的文件名 文件操作

with open打开文件

# with为我们提供了自动关闭文件的功能
with open(r''C:\Users\Black\Documents\Python learning\文件操作, 'wt',encoding='utf-8') as f:
# 在此缩进下文件不会关闭
f.write('清空写入') print('写入完成') # 当缩进结束文件关闭

可读可写模式(补充)

r+ : 即可读又可写, 光标在文本头部, 写入的话会覆盖后面的字符

w+: 即可读又可写, 会先清空文件内容

a+ : 即可读又可写, 光标在文档尾部, 读取的话会读不到内容

控制光标

with open(r''C:\Users\Black\Documents\Python learning\文件操作, 'rt',encoding='utf-8') as f:

    # 3表示读取的字符数量
print(f.read(3)) '''
3表示移动三个字节, 0表示光标的起始位置是头部(1表示当前位置,2表示文本尾部),
所以这行代码就表示从文档头部, 将光标向后移动三个字节
'''
f.seek(3, 0) # .tell()方法可以显示当前光标的位置
print(f.tell()) # .truncate()截断方法, 3表示光标向后移动三个字节,光标后的内容全部删除
f.truncate(3)

最新文章

  1. <img>标签链接地址失效如何自动显示默认图片
  2. BFC的深入理解
  3. Windows Desktop 调用 WinRT api
  4. velocity模板引擎学习(4)-在standalone的java application中使用velocity及velocity-tools
  5. 如何设置启动页 LaunchImage
  6. ffmpeg无法接收组播流问题处理
  7. clock_t与time_t的区别及联系
  8. 问题:Maven: missing net.sf.json-lib
  9. EntityFramework 和 linq 判断是否在指定时间段内的方法
  10. 小测试 php代理,nginx代理,直接访问对比
  11. 算法起步之Prim算法
  12. C++&&Mysql&&codeblocks
  13. python : 批量下载R语言库包
  14. MSIL实用指南-局部变量的声明、保存和加载
  15. Python核心编程 | 浅谈闭包的使用
  16. CSS中的继承
  17. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem K. UTF-8 Decoder 模拟题
  18. 20165310 预备作业3 Linux安装及学习
  19. Eclipse导入android项目包xml报错未生成R文件
  20. 过滤器系列(三)—— RSQF

热门文章

  1. nyoj 733-万圣节派对 (printf("%06d", i))
  2. JavaScript中解析JSON --- json.js 、 json2.js 以及 json3.js的使用区别
  3. react-hook生命周期
  4. centos7 设置连接无线wifi
  5. pwnable.kr 第一天
  6. iOS开发调试概览
  7. pyenv virtualenv和virtualwrapper
  8. 各种优化方法总结比较(sgd/momentum/Nesterov/adagrad/adadelta)
  9. day20190916notes
  10. Docker 更换国内的Hub源