文件操作


对文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

1.open()打开文件

 #获取文件句柄
f = open("yesterday","r",encoding="utf-8")
#读取数据
data = f.read()
#打印读取的文件
print(data)
#关闭文件
f.close()

打开文件的模式有:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

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

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

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

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

2. with 语句打开文件

使用with语句打开文件,不需要在最后使用f.close()来关闭文件,with执行完毕之后会自动关闭。

 with open("./name.txt",'r') as f:
names = f.read()
print(names)

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

 with open('log1') as obj1, open('log2') as obj2:
pass

3.read()

文件内容

Yesterday when I was young
The taste of life was sweet
As rain upon my tongue
 with open("flieread.txt","r",encoding="utf-8") as f:
data1 = f.read()
print(data1)
data2 = f.read()
print("------data2-----",data2)

data2的部分为空,因为在文件中 ,维护一个类似文件指针的一个东西,这个文件指针类似于我们平时操作文件时的光标的东西,所以当第1次读文件时,文件指针已经指向最后一个位置,所以第2次再去读取的时候,是从最后一个位置开始读取的,所以读取的为空。

4.python读取文件方式

 with open("yesterday.txt","r",encoding="utf-8") as f:
while True:
line = f.readline().strip()
print(line)
print(f.tell())
if not line:
f.seek(0)
print(f.read(1))
break
f.tell() 显示读取文件到什么位置,也是下一次开始读文件的位置,每个字符占一位(空格、标点符号也算)

f.seek() 设置读取文件光标的位置,f.seek(5)就是从第5个字符开始读取

python读取文件从 0 的位置开始,Somehow中S的位置为 1

第二行是从第72个字符开始读取的,即 不知为何中 不的位置为 72

f.seek(0)是文件读取完后,光标重新回到文首

f.read(1) 读取第一个字符即  S

5.readlines()

readlines()和read()一样也是一次读取整个文件存放在内存中,所以只适合读取小文件,readlines()自动将文件内容分析成一个行的列表。该表可由python的for ... in ...处理。

 with open("flieread.txt","r",encoding="utf-8") as f:
line = f.readlines()
print(line)
for i in line:
print(i.strip()) #输出
['Yesterday when I was young\n', 'The taste of life was sweet\n', 'As rain upon my tongue']
Yesterday when I was young
The taste of life was sweet
As rain upon my tongue

6.readline()

每次只读取一行,这种占用内容比较小

 with open("flieread.txt","r",encoding="utf-8") as f:
line = f.readline()
print(line) #输出
Yesterday when I was young

7.逐行读取文件

1 with open("fileread.txt","r",encoding="utf-8") as f:
2 while True:
3 line = f.readline()
4 if not line:
5 break
6 else:
7 print(line)

 

最新文章

  1. 《高可用MySQL》2 – 单机版MySQL主从配置
  2. AIM Tech Round 3 (Div. 2)
  3. [基础常识]阿里云ecs从购买到环境搭建和建站!!(phpstudy一件包)
  4. hdu 1281
  5. EEPlat vs saleforce 配置 Knowledge Article 演示样例
  6. 基于visual Studio2013解决面试题之0608找出两个只出现一次的数
  7. css中的层叠性及权重的比较
  8. 不错的JQuery屏幕居中提示信息封装,使用方便,可集成到项目
  9. 我的小OJ
  10. iOS 性能优化总结
  11. [css]将textarea前的文字设置在左上角
  12. <20190106>千兆 小型局域网传输速率不达标问题解决
  13. MongDB 数据库使用技巧及注意事项
  14. HBase安装与应用
  15. PyTorch-Kaldi 语音识别工具包
  16. cmake 基本命令
  17. 2018 桂林ccpc现场赛 总结
  18. Kafka Consumer 启动测试类
  19. 3.结对编程成果报告(小学生四则运算的出题程序,Java实现)
  20. 【转】SpringBoot学习笔记(7) SpringBoot整合Dubbo(使用yml配置)

热门文章

  1. “秒杀”问题的数据库和SQL设计【转载】
  2. No.1001_第六次团队会议
  3. Daily Scrumming* 2015.10.29(Day 10)
  4. linux 常用命令-配置登陆方式
  5. Software Defined Networking(Week 2, part 3)
  6. js获取浏览器窗口属性
  7. Linux下管道重定向使用以及Shell编程(操作系统)
  8. KEIL C51代码优化详细分析
  9. 解决Shiro+SpringBoot自定义Filter不生效问题
  10. Longest Substring with At Most Two Distinct