文件操作
1.文件类型
-
文本文件
-
二进制文件
- 不能使用文本工具查看的文件,比如图片、视频、音频等,需要特殊的工具才能打开查看
2.文件操作
2.1操作文件的基本套路
2.2操作文件的函数&方法
-
open:打开文件,返回文件操作对象
-
read:将文件内容读入内训
-
write:将制定内容写入文件
-
close:关闭文件
2.3 read方法 --读取文件
try:
filename = open("readme")
print(filename.read())
filename.close()
except FileNotFoundError:
print("未找到文件")
except Exception as fault:
print("未知错误:%s" % fault)
2.4文件指针
- 文件读取一遍之后,指针会去到文件最后,这时候再调用read方法,就读不到任何内容了
2.5文件的写入和追加
-
文件的打开方式
-
r:只读方式
-
w:只写方式
-
a:追加方式
-
r+、w+、a+ :读写

== 不推荐使用后面带+的方式==
2.6分行读取 – readline
在面对一个大文件时,如果全部都读取出来放到内存,会对内存造成很大的压力
-
readline 默认每次只读取一行文件
-
每次读完一行之后,指针会去到下一行
2.7另一种文件操作方式–with open
自己看的这个教程没有讲这个方法,但是个人比较喜欢这个方法,这个方法打开文件之后,用完系统会自动关闭,不用手动关闭
刚刚发现,这个方法有个很打的弊端,就是很难实现多个文件之间的操作,比如复制粘贴这种,如果单文件使用,可以用这个,如果涉及到多文件,就不要用了
2.8文件复制练习
下面是正确的代码
file_to_read = open("test.txt")
file_to_write = open("test6.txt", "a")
while True:
file_line = file_to_read.readline()
if not file_line:
break
file_to_write.write(file_line)
file_to_read.close()
file_to_write.close()
在写的时候,想到了下面的方法,但是发现会死循环
file_to_read = open("test.txt")
file_to_write = open("test6.txt", "a")
while True:
file_line = file_to_read.readline()
if file_line is None:
break
file_to_write.write(file_line)
file_to_read.close()
file_to_write.close()
目前不知道为什么会出现这个情况,如果有大神看到,还望指点一二···不甚感激
由于个人不喜欢while循环,想到了用for循环的想法:
不想全部读取出来再放进去,所以只能循环啦
-
先介绍一个方法–readlines:
-
这个方法会把文件的所有内容读取到一个列表中,每一行作为一个列表的元素
-
通过获取该列表的元素数量,就可以得到文件的行数,从而使用for循环···我还真的是执着
-
但是这个方法还是有毛病,如果文件特别大,还是不适用
3.os模块对目录和文件的操作
对文件的管理,不涉及对文件内容的操作
