文件处理

1,什么是文件?

文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位。

文件的操作核心就是:读和写

即我们只需要对文件进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序对文件的读写操作转换成具体的硬盘指令(比如控制盘片转动,控制机械手臂移动来读写数据)。

2.为什么要有文件?

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

3.如何用文件?

name='egon'

pwd='123'

#把内存中的数据存储到硬盘中去。

一套完整的计算机系统,分成 硬件,操作系统,应用程序。应用程序没法读硬盘,发请求给操作系统,让操作系统把一个文件给打开,文件对应的是一块硬盘空间,操作系统就将你对这个文件的读指令转成硬盘中盘片的转,磁头再上面读写数据。把数据读到内存里。

别人以及把数据永久存放到硬盘去,我们要读到内存去,比入做一个用户比对,用户输入账号密码,我们的程序是把账号密码读到内存里去,

# l=[1,2,3]    
# l1.append(4) 加了一个列表,
# l2.append(5) 加了另一个列表
# print(l) 意思是把列表赋值给一个变量,让变量发起指令。

#把硬盘中的数据读到内存中。


# #rawstring
# f=open(r'E:SH_fullstack_s2day08a.txt',mode='r') # 向操作系统发起请求,要求操作系统打开文件,占用操作系统的资源
# 以上就是一个变量的定义,f,就是一个变量,open()站的是应用程序的空间,其次open还对应操作系统真正打开的文件,这个文件对应
# 硬盘的
# # f1=10
# # f2='aaaa'
# # f2.index()
# # print(f)
# # y=2
# data=f.read() # 向操作系统打开发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
# print(data)
#
# # del f #如果先删了,就没有变量名了,不能关闭了。
# f.close() #向操作系统发起请求,要求操作系统关闭文件,回收操作系统资源
# # print(f)
# # f.read() #读写操作应该放在clos前面,放在后面就不能读了,因为已经关闭了
#
# # 总结:
# #1、打开文件
# #2、读写
# #3、关闭
#
#
# # 绝对路径和相对路径:
#
# # #1、绝对路径:从盘符(C:\ E:\ D:\)开始写一个完整的路径
# # #2、相对路径:相对于当前执行文件所在的文件夹开始找
# # f=open(r'aa.txt')
#
#
#
# 3.文件的打开模式:
# # 控制读写文件内容的结果有两种:t模式text,b模型bytes
# #注意:
# #1、t与b这两种模式均不能单独使用,都需要与r/w/a之一连用
# #2、默认的内容格式是t
# #3、只有文本文件才能用t模式,也只有文本文件才有字符编码的概念
#
#
# # 操作文件的基础模式有三种:
# #1、r,默认的(读)
# #2、w(写)
# #3、a
#
#
# #r:read,只读模式
# #1、只能读,不能写
# #2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到开头
# # f=open(r'b.txt',mode='rt',encoding='utf-8')
# # data1=f.read()
# # print('第一次:',data1)
# # # print(type(data1)) #把文件内容都读出来了,转成类型是字符串类型,再硬盘上是二进制形式。
# #文件当时以UTF-8存的,操作系统负责读,要告诉操作系统用UTF-8来反解,所以用到encoding,操作系统默认的是gbk模式。
#
# # # data2=f.read()
# # # print('第二次:',data2)
# # f.close()a.text f.read的意思是一下把文件内容全读出来,第一次读完没关的情况下,读第二次
# 第二次读不出来,文件随着你读,指针一点一点往后移动的。第一次读的时候,指针已经再文件末尾了,如果再接着读,
# 后面没东西了,什么也读不出来了。。
#
# # 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('你好啊我的天 你好啊我的地 啊啊啊啊啊啊 ') # 换行,写多行。
# # # f.write('4444 ')
# # # f.write('5555')
# #
# # lines=['1111 ','2222 ','33333 ']
# # # for line in lines:
# # # f.write(line)
# # f.writelines(lines) #一个for循环,调出一个内容写一行,只要文件不关,文件指针跟着移动。
# # 只要w模式打开,再文件存在的时候会将文件内容清空。
# # f.close()
#
#
# #a:只追加写模式
# #1、只能写,不能读
# #2、在文件不存在时会创建空文件,在文件存在的时候会将指针移动到文件末尾
#
# # f=open('d.txt',mode='at',encoding='utf-8')
# # print(f.readable()) #不能读
# # f.read() #不能读
#
# # f.write('555555 6666 ') #追加写
# # f.writelines(['77777 ','8888888 ','999999999 '])
#
# # f.close()
#
# #b:二进制模式
# #注意:
# #1、一定不能指定字符编码,只有t模式才与字符编码有关
# #2、b是二进制模式,是一种通用的文件读取模式,因为所有的文件在硬盘中都是以二进制形式存放的
#
# # f=open('egon.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) #可以把文件里的内容取出一行,打出一行。当文件小的时候,可以
# 直接用.read的方式读出来,当文件大的时候,可以用for循环把文件里的内容一行一行打出来。
# # f.close()
#
#
# # f=open('d.txt','rb')
# # for line in f:
# # print(line)
# # f.close()
#
# # f=open('oldsiji.mp4','rb')
# # for line in f:
# # print(line) #文件过大的时候,思路是,应该以读的方式打开原文件,再以写的
# 方式打开新文件,从源文件读出一行内容,就写一行到新文件里。
# # f.close()
#
#
# # f=open('e.txt','wb')
# # f.write('你好啊'.encode('utf-8'))
# #
# # f.close()
#
#
# # f=open('e.txt','ab')
# # f.write('大家好,我是egon'.encode('utf-8'))
# # 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') # #源文件内容是二进制形式,需要解码为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())
#
#
#
#
#
#
#
#
原文地址:https://www.cnblogs.com/fxc-520520/p/9134513.html