突然来一句:“慨然有经略四方之志”

文件操作三部曲:1.先用open打开 2.再写关闭  3.再回到中间写操作     为啥要刚打开就关闭 那是很容易望,所以先写上。。。

基本格式 f = open("file_name", "r", encoding="utf-8")    都得有才标准呐 !

f.read() 如果不写读几位,它会一直读下去 文件指针也就从头跟着下去,而且他是不会自己回来滴  所以要用f.seek()  把指针找回来并放到想去的位置。f.tell()是告诉指针当前的位置

f.readline()是读一行  f.readlines() 是把文件全部读出来做个列表,然后把每一行作为列表的一个元素  list = f.readlines()   list[3]   就是第四行内容了  这种方法只适用于小文件,因为占内存啊

想要读一个文件 但是不读某一行  一种很low的写法是:   for index, line in emunerate(f.readlines())     然后在里头搞个判断让他在指定行不输出就欧克了 占内存是真!

一个逼格高点的,正常的写法是:  for line in f     然后直接操作就行,不过得加个count来自己计数 但这样不占内存啊,就一行

“rb” 是以二进制读的方式打开   “wb"是以二进制写的方式打开    用于网络传输的  注意f.write("str".encode())  写的时候要编码encod()

一下是一些操作练习,还是叫草稿把。。。。。。不过倒是把" r+" "w+" "a+"  搞明白了

 #!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author:XiaoFeng
import time
import sys # r+ 读写 不重新创建 而是在源文件写
# 要注意写的时候,文件指针的位置,
# 不然可能覆盖原先部分内容
f1 = open("test_file", "r+", encoding="utf-8")
print(f1.tell())
f1.write("哇哈哈哈哈哈!")
print(f1.tell())
f1.seek(0)
print(f1.tell())
date = f1.read()
print(date)
f1.write("测试")
print(f1.tell())
f1.close() print("-" * 50) # w+ 写读 创建一个新的再写 就是在搞个这个名字的空文件,
# 源文件没了 所以一开始读也是空的
# 内容全部从头重新里面写,
f2 = open("test_file1", "w+", encoding="utf-8")
print(f2.tell())
date1 = f2.read()
print("----%s----" % date1)
f2.write("哦哦哦哇哈哈哈哈哈!")
print(f2.tell())
f2.seek(0)
print(f2.tell())
date2 = f2.read()
print("----%s----" % date2)
print(f2.tell())
f2.close() print("-" * 50) # a+ 追加读写 没有的话会新建一个文件
# 若有文件 则在源文件基础上 在末尾追加内容
# 欲使用seek改变指针位置从而改变写的位置是无效的
# 只能加在最末尾
f3 = open("test_file2", "a+", encoding="utf-8")
print(f3.tell())
date3 = f3.read()
print("----%s----" % date3)
f3.write("啊啊啊啊哦哦哦哇哈哈哈哈哈!")
print(f3.tell())
f3.seek(0)
print(f3.tell())
date4 = f3.read()
print("----%s----" % date4)
print(f3.tell())
f3.seek(5)
f3.write("测试测试")
f3.seek(0)
print(f3.read())
f3.close() # 截断 即保留一段 剩下的全删
# 注意这里seek改变指针位置也没作用 照样从头开始数
f4 = open("test_file3", "w+", encoding="utf-8")
print(f4.tell())
f4.write("")
f4.seek(0)
date = f4.read()
print(date)
f4.seek(2)
f4.truncate(5)
f4.seek(0)
date5 = f4.read()
print(date5)
f4.close() print("-" * 50) # 做一个进度条
for i in range(50):
sys.stdout.write("#") # sys.stdout.write() 标准输出内容 无空个回车
sys.stdout.flush() # f.flush() 刷新 立即存入硬盘
time.sleep(0.1) # sys.stdout.flush() 立即输出到屏幕 print(f3.name) # 打印名字 注意后面没括号

python3 文件操作练习 r+ w+ a+ 的理解的更多相关文章

  1. python从入门到大神---4、python3文件操作最最最最简单实例

    python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...

  2. Python3 文件操作(十六)

    一 文件操作 1.介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...

  3. [Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等

    1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...

  4. Python3文件操作1 --Python3

    1.文件的两种类型 文本文件:由单一特定的编码字符组成(如:txt文件) 二进制文件:直接由比特0和比特1组成,文件内部数据组织格式与文件的用途有关(视频.图片) 2.文件主要操作概述 Python对 ...

  5. C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析

    C语言文件打开模式浅析 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式  只可以读   只可以写  读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ...

  6. python文件读写模式 --- r,w,a,r+,w+,a+,rb,wb

    要了解文件读写模式,需要了解几种模式的区别,以及对应指针 r : 读取文件,若文件不存在则会报错 w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件 a : 写入文件,若文件不存在则会先创建再 ...

  7. python3文件操作

    文件操作的过程 1)打开 2)操作 3)关闭 1.写(清空写入) # f = open(file='test', mode='w', encoding='utf-8') # 第一种情况 # f.wri ...

  8. Python2与python3 文件操作关于打开文件

    #首先在python3中操作文件只有一种选择,那就是open() #而在python2中则有两种方式:file()与open() 两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两 ...

  9. python 基础 3.1 打开文件 a a+ r+ w+ 详解

      一.python 访问文件   1.在python中要访问文件,首先要打开文件,也就是open ---open   r:  只读   w:  只写 ,文件已存在则清空,不存在则创建   a:追加 ...

随机推荐

  1. SpringMVC中日期格式的转换

    解决日期提交转换异常的问题 由于日期数据有很多种格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑定.前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestM ...

  2. SHELL脚本--expr命令全解

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字 ...

  3. SSM-SpringMVC-17:SpringMVC中深度剖析HandlerAdapter处理器适配器底层

     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先放一张图 很熟悉啊,之前就看过,我们之前已经把handlerMapping剖了个底朝天,顺着上次的进度,继 ...

  4. 安装nginx和php

    安装nginx 1.安装依赖包 yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel perl pe ...

  5. 工作流引擎Activiti 专题

    https://github.com/Activiti/Activiti Quick Start Guide This quick start assumes: Familiarity with Ma ...

  6. C++11中map的用法

    最全的c++map的用法 1. map最基本的构造函数:map<string ,int>mapstring; map<int,string >mapint;map<sri ...

  7. VMware workstation创建虚拟机console

    1. 使用VMware workstation创建虚拟机硬件2. 安装操作系统3. 操作系统安装过程 1. 使用VMware workstation创建虚拟机硬件 使用VMware workstati ...

  8. 谈谈 ANR 之 Service 超时

    1. 核心源码 关键类 路径(/frameworks/base/) ActiveServices.java services/core/java/com/android/server/am/Activ ...

  9. 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法

    一.前述 maven 线上部署的话会出现一些问题比如java.lang.ClassNotFoundException或者no main manifest attribute的话,是因为maven 配置 ...

  10. Maven把项目依赖的所有jar包都打到同一个jar中

    目录 1 使用maven-shade-plugin 2 推荐: 使用maven-assembly-plugin 3 扩展: Maven安装本地jar包到本地仓库 4 扩展: 手动生成jar包 5 扩展 ...