当前位置: 首页 > article >正文

python语法入门到面向过程编程(七)

文件

1、什么是文件?
文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位
文件的操作核心就:读、写
即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序
对文件的读写操作转换成具体的硬盘指令(比如控制盘片转动,控制机械手臂移动来读写数据)

2 为什么要有文件?
因为内存无法永久保存数据,但凡我们想要永久保存数据都需要保存到硬盘中,
而操作文件就可以实现对硬件的操作

3、文件的读写模式
控制读写文件内容的结果有两种:t模式text,b模型bytes
1、t模式:文本文件模式
2、b模式:二进制模式
注意:
1、t与b这两种模式均不能单独使用,都需要与r/w/a之一连用
2、默认的内容格式是t
3、只有文本文件才能用t模式,也只有文本文件才有字符编码的概念

4、操作文件的三种模式:
(1)r:read,只读模式
1、只能读,不能写
2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到开头
1、只能读,不能写
2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到开头

 f=open(r'b.txt',mode='rt',encoding='utf-8')
 data1=f.read()
 print('第一次:',data1)
  print(type(data1))
  data2=f.read()
  print('第二次:',data2)
 f.close()

 f=open(r'b.txt',mode='rt',encoding='utf-8')
 data2=f.read()
 print('第二次:',data2)
 f.close()

 f=open(r'b.txt',mode='rt',encoding='utf-8')
  print(f.readable())
  print(f.readline(),end='')
  print(f.readline(),end='')

 lines=f.readlines()
 print(lines)
 f.close()

w:只写模式
1、只能写,不能读
2、在文件不存在时会创建空文件,在文件存在的时候会将文件内容清空

 f=open(r'c.txt',mode='wt',encoding='utf-8')
  print(f.readable())
  f.read()
  f.write('你好啊我的天\n你好啊我的地\n啊啊啊啊啊啊\n')
  f.write('4444\n')
  f.write('5555')

 lines=['1111\n','2222\n','33333\n']
  for line in lines:
      f.write(line)
 f.writelines(lines)

 f.close()

a:只追加写模式
1、只能写,不能读
2、在文件不存在时会创建空文件,在文件存在的时候会将指针移动到文件末尾

 f=open('d.txt',mode='at',encoding='utf-8')
 print(f.readable())
 f.read()
 f.write('555555\n6666\n')
 f.writelines(['77777\n','8888888\n','999999999\n'])
 f.close()

b:二进制模式
注意:
1、一定不能指定字符编码,只有t模式才与字符编码有关
2、b是二进制模式,是一种通用的文件读取模式,因为所有的文件在硬盘中都是以二进制形式存放的

 f=open('xxx.jpg','rb')
 data=f.read()
 print(type(data))
 f.close()

 f=open('oldsiji.mp4','rb')
 data=f.read()
 f.close()

 f=open(r'F:\oldsiji.mp4','wb')
 f.write(data)
 f.close()

循环读

 f=open('d.txt','rt',encoding='utf-8')
 for line in f:
     print(line)
 f.close()

d = {}
f=open('d.txt','r')
for line in f:
    line = line.strip("\n")
    line = line.split(':')
    d[line[0]]=line[1]
print(d)

f.close()

 f=open('oldsiji.mp4','rb')
 for line in f:
     print(line)
 f.close()


f=open('e.txt','wb')
f.write('哈哈\n'.encode('utf-8'))
f.close()

 f=open('e.txt','ab')
 f.write('大家好,我是xxx'.encode('utf-8'))
 data = f.read()
 print(data)
 f.close()

上下文管理

 with open('e.txt','rb') as f,open('j.txt','wt',encoding='utf-8') as f1:
     文件的操作
     src_data=f.read()
     res=src_data.decode('utf-8')
      print(res,type(res))
     f1.write(res)



with open('e.txt','rb') as f,\
        open('j.txt','wb') as f1:
    文件的操作
    f1.write(f.read())
	

http://www.kler.cn/a/16952.html

相关文章:

  • 《TCP/IP网络编程》学习笔记 | Chapter 8:域名及网络地址
  • java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动
  • Ubuntu安装MySQL8
  • LeetCode【0031】下一个排列
  • 解决表格出现滚动条样式错乱问题
  • ElasticSearch学习笔记一:简单使用
  • QML动画分组(Grouped Animations)
  • 6. 计算机网络
  • synchronized用法加锁原理
  • 深入浅出C++ ——异常
  • Ubuntu 安装和配置 Samba服务开启共享文件夹
  • 【光伏预报/太阳能预报】上海道宁与Solargi为您提供开发地理数据库模拟工具和网络服务
  • 关于项目移植过程中,如何在不修改java源程序的情况下,如何适应新环境下的mysql
  • web小游戏开发:华容道(完)
  • 功能齐全的 ESP32 智能手表,具有多个表盘、心率传感器硬件设计
  • Bizcharts 3.0 到 4.0 升级部分问题记录
  • 现代CMake高级教程 - 第 5 章:链接第三方库
  • spring1:核心和设计思想
  • Vue3中双向数据绑定与Pinia实践+JS数据引用的循环修改问题
  • 【Docker_windows】安装Docker桌面版
  • 2023哪款蓝牙耳机性价比高?200左右高性价比蓝牙耳机推荐
  • windows11 安装多个mysql8
  • 2019临沂中考数学解析
  • 2023年华中杯C题计算结果
  • 哪款蓝牙耳机便宜又好用?2023公认质量最好的蓝牙耳机推荐
  • GUI编程(一)