python3 文件操作练习 r+ w+ a+ 的理解
突然来一句:“慨然有经略四方之志”
文件操作三部曲: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+ 的理解的更多相关文章
- python从入门到大神---4、python3文件操作最最最最简单实例
python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...
- Python3 文件操作(十六)
一 文件操作 1.介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...
- [Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等
1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...
- Python3文件操作1 --Python3
1.文件的两种类型 文本文件:由单一特定的编码字符组成(如:txt文件) 二进制文件:直接由比特0和比特1组成,文件内部数据组织格式与文件的用途有关(视频.图片) 2.文件主要操作概述 Python对 ...
- C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
C语言文件打开模式浅析 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 只可以读 只可以写 读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ...
- python文件读写模式 --- r,w,a,r+,w+,a+,rb,wb
要了解文件读写模式,需要了解几种模式的区别,以及对应指针 r : 读取文件,若文件不存在则会报错 w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件 a : 写入文件,若文件不存在则会先创建再 ...
- python3文件操作
文件操作的过程 1)打开 2)操作 3)关闭 1.写(清空写入) # f = open(file='test', mode='w', encoding='utf-8') # 第一种情况 # f.wri ...
- Python2与python3 文件操作关于打开文件
#首先在python3中操作文件只有一种选择,那就是open() #而在python2中则有两种方式:file()与open() 两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两 ...
- python 基础 3.1 打开文件 a a+ r+ w+ 详解
一.python 访问文件 1.在python中要访问文件,首先要打开文件,也就是open ---open r: 只读 w: 只写 ,文件已存在则清空,不存在则创建 a:追加 ...
随机推荐
- SpringMVC中日期格式的转换
解决日期提交转换异常的问题 由于日期数据有很多种格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑定.前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestM ...
- SHELL脚本--expr命令全解
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字 ...
- SSM-SpringMVC-17:SpringMVC中深度剖析HandlerAdapter处理器适配器底层
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先放一张图 很熟悉啊,之前就看过,我们之前已经把handlerMapping剖了个底朝天,顺着上次的进度,继 ...
- 安装nginx和php
安装nginx 1.安装依赖包 yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel perl pe ...
- 工作流引擎Activiti 专题
https://github.com/Activiti/Activiti Quick Start Guide This quick start assumes: Familiarity with Ma ...
- C++11中map的用法
最全的c++map的用法 1. map最基本的构造函数:map<string ,int>mapstring; map<int,string >mapint;map<sri ...
- VMware workstation创建虚拟机console
1. 使用VMware workstation创建虚拟机硬件2. 安装操作系统3. 操作系统安装过程 1. 使用VMware workstation创建虚拟机硬件 使用VMware workstati ...
- 谈谈 ANR 之 Service 超时
1. 核心源码 关键类 路径(/frameworks/base/) ActiveServices.java services/core/java/com/android/server/am/Activ ...
- 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法
一.前述 maven 线上部署的话会出现一些问题比如java.lang.ClassNotFoundException或者no main manifest attribute的话,是因为maven 配置 ...
- Maven把项目依赖的所有jar包都打到同一个jar中
目录 1 使用maven-shade-plugin 2 推荐: 使用maven-assembly-plugin 3 扩展: Maven安装本地jar包到本地仓库 4 扩展: 手动生成jar包 5 扩展 ...