python----------文件操作

一、文件处理流程

  1.打开文件,得到文件句柄并赋值给一个变量

  2.通过句柄对文件进行操作

  3.关闭文件

r模式,默认模式,文件不存在则报错

w模式,文件不存在则创建,文件存在则覆盖

a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写日志文件的时候常用),追加模式是一种特殊的写模式

b(rb,wb,ab)模式:不用加encoding:utf-8

1 f=open('c.txt','rb')
2 # print(f.read())
3 print(f.read().decode())
4
5 f=open('d.txt','wb')
6 f.write('啦啦啦'.encode('utf-8'))
7 f.close()

二、基本操作

1.文件打开模式

  文件句柄=open('文件路径',‘模式’)

打开文件时,需要指定文件路径和以什么方式打开文件。

打开文件的模式有:

  • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
  • w,只写模式【不可读;不存在则创建;存在则清空内容】
  • x, 只写模式【不可读;不存在则创建,存在则报错】
  • a, 追加模式【可读;   不存在则创建;存在则只追加内容】
  • # #只读模式
    # f=open(r'c.txt',encoding='utf-8')
    # # print('====>1',f.read())
    # # print('====>2',f.read())
    # # print(f.readable())
    # # print(f.readline(),end='')
    # # print(f.readline())
    # # print("="*20)
    # # print(f.read())
    # print(f.readlines())
    # f.close()#写模式:文件不存在则创建,文件存在则覆盖原有的
    # f=open("new.py",'w',encoding='utf-8')
    # f.write('1111111111\n')
    # f.writelines(['2222\n','2222548\n','978646\n'])
    # f.close()# 追加模式:文件不存在则创建,文件存在不会覆盖,写内容是追加的方式写
    # f=open('new.py','a',encoding='utf-8')
    # f.write('nishishui\n')
    # f.writelines(['aa\n','bb\n'])
    # f.close()

"+" 表示可以同时读写某个文件

  • r+, 读写【可读,可写】
  • w+,写读【可读,可写】
  • x+ ,写读【可读,可写】
  • a+, 写读【可读,可写】

"b"表示以字节的方式操作

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

练习,利用b模式,编写一个cp工具,要求如下:

  1. 既可以拷贝文本又可以拷贝视频,图片等文件

1 # b模式
2 f=open('1.jpg','rb')
3 data=f.read()
4 # print(data)
5 f=open('2.jpg','wb')
6 f.write(data)
7 print(data)

三、上下文管理

1. with open('a.txt','w')  as  f:

  pass

2.with open('a.txt','r')  as read_f,open('b.txt','w')  as  write_f:

  data=read_f.read()

  write_f.write(data)

四、文件的修改

1 import os
2 with open('a.txt','r',encoding='utf-8') as read_f,\
3         open('a.txt.swap','w',encoding='utf-8') as write_f:
4     for line in read_f:
5         write_f.write(line)
6
7 os.remove('a.txt') 8 os.rename('.a.txt.swap','a.txt')

五、文件内光标移动

一: read(3):

  1. 文件打开方式为文本模式时,代表读取3个字符

  2. 文件打开方式为b模式时,代表读取3个字节

二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate

注意:

  1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

     seek控制光标的移动,是以文件开头作为参照的。

   tell当前光标的位置

  2. truncate是截断文件,截断必须是写模式,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

1 import time
2 with open('test.txt','rb') as f:
3     f.seek(0,2)
4     while True:
5         line=f.readline()
6         if line: 7 print(line.decode('utf-8')) 8 else: 9 time.sleep(0.2)

转载于:https://www.cnblogs.com/kcwxx/p/10144440.html

Python学习【第6篇】:Python之文件操作相关推荐

  1. python学习必会知识点:对文件操作详解

    python文件读写示例 with open(file_w_path, 'r') as f_r:with open(file_r_path, 'w') as f_w:for line in f_r.r ...

  2. python学习笔记:第8天 文件操作

    目录 1. 文件操作介绍 2. 文件操作的几种方式 3. 文件的操作的方法 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的.在python中文件的操作非常简单,并不像J ...

  3. python学习笔记Day4 面向对象编程,文件操作,os模块,代码调试

    一.traceback模块 错误日志可能用到 import tracebackwhile 1: # 捕获异常的顺序按照先父类后子类try:n1 = int(input('请输入一个被除数'))n2 = ...

  4. python学习历程-安装篇(一)

    python学习历程-安装篇 之前工作中数据量很少,每天也就是用excel发一下报表,函数已经足够应付工作内容,但心里一直渴望学习更深层次一点的数据分析(崇拜那些技术大神),网上看了很多有关数据分析挖 ...

  5. python学习[第十三篇] 条件和循环

    python学习[第十三篇] 条件和循环 if语句 单一if 语句 if语句有三个部分构成,关键字if本身,判断结果真假的条件表达式,以及表达式为真或非0是执行的代码 if expression: e ...

  6. 程序猿编程课堂 Python学习之入门篇1:环境搭建与第一个程序

    前言: Python作为目前比较热门的编程语言,其简单和简洁的语法使它成为一种非常好的通用编程语言,它是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),并且随着版本的不断更新和 ...

  7. 猿编程python代码_程序猿编程课堂 Python学习之入门篇3:简单的数据类型

    1. 什么是数据类型? 我们知道编程就是编写程序解决某个问题,而任何能使用编程来解决的问题都是能够提取或者转换出相应的数据,只是数据的表达形式是不一样的,而这表达形式就是数据类型. 比如,数学中的数字 ...

  8. Python学习笔记:用Python获取数据(本地数据与网络数据)

    Python学习笔记:用Python获取数据(本地数据与网络数据) 一.用Python获取本地数据 读写文件(三种基本模式:r, w, a) 1.写文件 2.读文件

  9. python学习笔记26(python中__name__的使用)

    python学习笔记26(python中__name__的使用) 在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以imp ...

  10. 小猪的Python学习之旅 —— 19.Python微信自动好友验证,自动回复,发送群聊链接

    小猪的Python学习之旅 -- 19.Python微信自动好友验证,自动回复,发送群聊链接 标签:Python 一句话概括本文: 上一节利用itchat这个库,做了小宇宙早报的监测与转发, 本节新增 ...

最新文章

  1. SpringBoot配置文件YAML配置注入(详解)
  2. ksql 数量大于2_504深入解读路基土石方说明,路基填方数量组成?运距>15km咋办...
  3. Runtime.getRuntime()
  4. H3C PPP MP配置示例二(续)
  5. Firefox OS, 向jQuery中XMLHttpRequest构造函数中传参,实现跨域请求数据
  6. linux系统远程工具,分享|Remmina:一个 Linux 下功能丰富的远程桌面共享工具
  7. 1024程序猿节:致敬改变世界的你
  8. (31)FPGA米勒型状态机设计(二段式)(第7天)
  9. 用C读取INI配置文件 (可在linux平台上用)
  10. Linux基础(13)文本查找利器find的使用方法
  11. python读取matlab数据_详解如何在python中读写和存储matlab的数据文件(*.mat)
  12. 【下降算法】最速下降法、Newton法、共轭梯度法
  13. 轻松入门微信小程序云开发(详细)
  14. UltraEdit 注册机使用激活方法
  15. 苹果手机!!!fiddler自动抓抓包iphone上的http(或https)请求,手机设置完http代理,但是手机不能上网了。即(fiddler iphone http代理 不能上网)
  16. python是动态语言图片_利用python图片生成,需10几行代码,生成的动态表情包(小黄鸭)...
  17. 程序员如何写好技术简历 —— 实例、模板及工具
  18. 计算机考研中的编号,考研科目前边的编号是什么意思
  19. 中银泰各种投资理财方式对比
  20. avr模拟串口通讯c语言,AVR的模拟串口的问题

热门文章

  1. 在Redhat安装部署Apache+MySQL+PHP(LAMP)
  2. 怎么提高大表和小表的连接查询效率?
  3. 打开MySQL数据库远程访问的权限
  4. Linux 的账号与群组(转)
  5. 打造一个名博需要多久
  6. SpringMvc通过@Value( ) 给静态变量注入值
  7. Objective-C 内存管理之ARC规则
  8. HDU1013 POJ1519 Digital Roots(解法二)
  9. DFS Codeforces Round #299 (Div. 2) B. Tavas and SaDDas
  10. asp.net学习笔记·get与post区别