enumerate
= open('lyrics',"r",encoding=""utf-8#文件句柄
"""
对文件操作流程 1 打开文件,得到文件句柄并赋值给一个变量
2 通过句柄对文件进行操作
3 关闭文件 r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】,若是文件存在,再先清空文件在再进去;open for writing, truncating the file first
a,追加写模式。【不存在则创建;存在则只追加内容;】open for writing, appending to the end of the file if it exists
"+" 表示可以同时读写某个文件
r+,可读写文件。【可读;可写;可追加】, 先读然后再追加不然会直接覆盖(用的最多的);若是文件不存在则不会创建文件,可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容,write时会从当前指针下写如数据;
没有创建文件的功能
但是实验发现,这里的r+ 可读可写 不会创建不存在的文件 从顶部开始写 会覆盖之前此位置的内容不完整。

test.txt的原始文件如下:

早上好
您好
how are you?
如果我们在open文件后,没有进行任何读写,则从末尾加入 1 with open('test.txt', mode='r+', encoding='utf-8') as f:
2 f.writelines("北京")
这时文件变成 北京好
您好
how are you? 如果我们在写之前进行了读操作,则会在末尾加入文件 1 with open('test.txt', mode='r+', encoding='utf-8') as f:
2 f.read(1)
3 f.writelines("北京")
这时在文件的末尾加入了北京两个字,与我们读多少没有关系。作用上类似a+模式 早上好
您好
how are you?北京
如果我们在open文件后,没有进行任何读写,则从末尾加入
w+,写读:没什么用)也是先把写的内容加到文件后面(会把原来的文件覆盖掉)
如果以w+方式打开文件,写入文件后,文件被覆盖或重建,样例

1 with open('test.txt', mode='w+', encoding='utf-8') as f:
2 f.write("tianjin")
3 f.flush()
4 print(f.readlines())
得到空[] with open('test.txt', mode='w+', encoding='utf-8') as f:
f.writelines("天津")
f.writelines('山东')
f.flush()
f.seek(0)
print(f.readlines())
需要seek才能读取到刚刚写入的内容。 另外注意 写操作不会自动加入换行符 读的一行末尾会有换行操作,可以用''.strip()去掉换行符 with open('test.txt', mode='r', encoding='utf-8') as f:
for line in f:
print(line.strip()) 去掉换行 如果某个文件正在open,就只这时,文件被修改,正在读文件的句柄能读出修改的内容 1 import time
2 with open('test.txt', mode='r', encoding='utf-8') as f:
3 time.sleep(5)
4 for line in f:
5 print(line.strip())
在文件末尾增加文件时,我们的f能读取到最后新增的内容。如果修改已经读取行的内容,若不seek,则读取不到。 这特点能用户增量读取分析日志文件

w+

a+,追加然后加上读的功能

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U
rb 二进制读取文件

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
rb
wb
ab 为了避免打开文件后忘记关闭,可以通过管理上下文
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理
with open('log1') as obj1, open('log2') as obj2:
pass- 当with代码块执行完毕时,内部会自动关闭并释放文件资源 for line in f: #这时f为一个迭代器的东西;高效的循环方法
  print(line) #一行行的读,并且内存中只保存一行;效率最高 常用方法
read() #可以设置长度读取文件所有内容并返回字符串,注意,不一定能全读回来::Read at most n characters from stream 
Read at most size bytes, returned as bytes不能这样操作,占用内存太大,当文件非常大时,要一行一行的读文件,要用for 循环
with open("format_test.py","r+") as fp: #要以这种方式读取整个文件,占用内存最少
for i in fp:
print(i) readline() #读取一行
__next__() #读取下一行: fp.__next__()
readlines() #读取所有内容,并返回列表(一行为列表的一个元素值):Read and return a list of lines from the stream:不能这样操作,占用内存太大;一次将内容读取
write() #写一行数据以unicode Write the unicode string s to the stream and return the number of characters written.
writelines(list) #写多行,参数为列表,列表中字符串需要换行,不然会写进一行:Write a list of lines to the stream
seek() #句柄指针操作,到达某个位置,用于移动文件读取指针到指定位置
tell() #获取当前句柄指针位置;按照字符的个数
truncate() #截取文件句柄头到当前位置的字符串,返回None;从头开始截断,若有输入,则从指定位置开始截取,即删除
flush() #强制刷新到硬盘
seekable()# Return True if the stream supports random access;终端类型文件不可返回
writeable() #Return True if the stream supports writing
name #print(fp.name)返回文件名
"""
a=["asfdasd","asdfasdf","333333333"]
with open("format_test.py","w+") as fp:
print(fp.read())
fp.write("asdf\n")
print(fp.name) for i in range(50): #进度条
  sys.stdout.write("q")
  sys.stdout.flush()
  time.sleep

with文件操作的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

  10. python 文件操作(转)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

随机推荐

  1. Servlet 起航 文件上传 中文文件名下载

    @WebServlet(name = "ticketServlet",urlPatterns = {"/tickets"},loadOnStartup = 1) ...

  2. Unet网络

    近期利用遥感影像进行路网提取,利用Unet网络进行图像分割 介绍如下: U-net网络非常简单,前半部分作用是特征提取,后半部分是上采样.在一些文献中也把这样的结构叫做编码器-解码器结构.由于此网络整 ...

  3. iTOP-6818开发板支持AXP228电源管理[官方推荐最佳匹配]_支持动态调频

    iTOP-6818开发板与4418开发板共兼容同一底板: 核心板:::::: 尺寸 50mm*60mm 高度 核心板连接器组合高度1.5mm PCB层数 6层PCB沉金设计 4418 CPU ARM ...

  4. 如何将vue/html在Hbuilder里进行apk打包封装生成直接可用程序

    在此简单讲述一下个人的理解: 方法: 对于Hbuilder里的项目文件: 1.直接右键:转换成移动app,然后生成一个json文件manifest.json,在该json文件下配置好应用程序的图标.和 ...

  5. java中的进程与线程及java对象的内存结构【转】

    原文地址:http://rainforc.iteye.com/blog/2039501   1.实现线程的三种方式:   使用内核线程实现     内核线程(Kernel Thread, KLT)就是 ...

  6. OGG-01168

    https://blog.csdn.net/zhrzhl/article/details/21698659

  7. 序列化 java.io.Serializable

    1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比 ...

  8. 异常:已引发: "设置 connectionId 时引发了异常。" (System.Xaml.XamlObjectWriterException) 引发了一个 System.Xaml.XamlObjectWriterException: "

    项目中,引用一个富文本编辑器,SmithHtmlEditor,进入页面的时候异常. 在View和ViewModel所在的类库引用. 还需要在Main中引用.

  9. Listary的使用

    前几天研究米老师语录之后,开始对工具的使用着迷.现在的慢是为了以后的快,所以现在研究的一些东西,是为了以后在工作中可以更加快速的提高效率. 最近找到了一款很不错的软件,Listary.想给小伙伴们介绍 ...

  10. python3 - 默认参数为列表

    默认参数的坑 定义一个函数,传入一个list,添加一个end再返回 1 2 3 def  add_end(L=[]):     L.append('END')     return L 正常调用时,结 ...