1.文件是什么?
文件数据都是保存在硬盘中的。
C盘、D盘,这里的内容都是硬盘上的内容,也都是文件!
文件夹(目录)也是一种特殊的文件,目录文件。
冯诺依曼体系结构:
1.内存 变量就是在内存中。
2.硬盘 文件就是在硬盘中。
内存与硬盘的区别
1.内存的空间更小,磁盘空间更大。
2.内存访问更快,磁盘访问更慢。
3.内存成本更贵,硬盘成本更便宜。
4.内存数据易失,硬盘的数据持久化存储。(硬盘上存储的数据以文件的形式来组织)
2.文件路径
此处把这一层一层的目录构成的字符串,就称为"文件的路径"。
知道了文件路径,就可以知道这个文件在硬盘上的详细位置,也就可以进一步的知道这个文件里都有啥了,就可以使用这个文件了。
目录名之间,使用\来分割,使用/(正斜杠)也可以。
在代码中表示一个文件路径,用/更多,使用\不太方便,因为.\在字符串里面有特定含义表示转义字符。
\\在字符串里才表示字符 \
\ 在字符串里,是特定含义的转义字符
3.文件的基本操作
3.1打开文件
#使用open 打开一个文件 f=open('d:/1/1.txt','r') print(f) print(type(f))
r 表示read 按照读方式打开
w表示write 按照写方式打开
a表示append,也是写方式打开,把内容写到原有文件内容的末尾
若文件不存在,则打开就会存在一些问题。
所以使用 f 这个文件对象进行读操作,就是在读硬盘,使用f这个对象进行写操作,就是在写硬盘
3.2关闭文件
文件在使用完了之后,一定要关闭,打开文件实际上是在申请一定的系统资源。
不再使用文件的时候,资源就应该及时释放。
否则就可能造成文件资源的泄漏,进一步的导致其他部分的代码无法顺利的打开文件了。
正是因为一个系统的资源是有限的,因此一个程序能打开的文件个数,也是有上限的。
在系统中可以通过一些配置项,来配置能打开文件的最大数目。(但是无论配置多少,,都不是无穷的,记得及时关闭,释放资源)
1KB =1024 Byte
1MB=1024 KB
1GB=1024MB
1TB=1024 GB
#打开文件个数的上限 flist=[] count=0 while True: f=open('d:/1/1.txt','r') flist.append(f) f.close() count+=1 print(f'打开文件的个数:{count}')
尽量手动释放,才能保证万无一失。
3.3写文件
如果是使用w方式打开,会清空掉文件原有的内容。】
使用a 方式打开,不会情空文件的原有的内容。
加个\n就会进行换行操作
如果文件对象已经被关闭了,那么意味着系统中和该文件相关的内存资源已经释放了,强行去写,就会出异常。
3.4读文件
#1.使用read来读取文件内容,指定读几个字符 # f=open('d:/1/1.txt','r',encoding='utf8') # result=f.read(19) # print(result) # f.close() #2.更常见的需求是按照行来读取 #最简单的办法是办法是for循环 f=open('d:/1/1.txt','r',encoding='utf8') for line in f: print(f'line={line}') f.close()
之所以多了一个空行是因为本来读到的文件的内容(这一行的内容,末尾就带\n)
此处使用print来打印,又会自动增加一个换行符。
可以给print再多设定个参数,修改print自动换行的行为,加个end即可。
原本默认是\n,修改为' '
#3.还可以使用readline方法直接把整个文件所有内容都读出来,按照行组织到一个列表里面 f=open('d:/1/1.txt','r',encoding='utf8') lines=f.readlines() print(lines) f.close()