###python的文件###
1.文件的操作步骤: 打开 操作 关闭
2.操作文件的关键字
x:
-写模式,新建一个文件
-如果该文件已经存在,会报错
r:
-只能读,不能写
-并将文件指针指向文件头
-读取的文件如果不存在,会报错
r+:
-即能写,也能读
-并将文件指针指向文件头
-如果文件不存在的话,会报错
w:
-只能写,不能读
-并将文件指针指向文件头
-写的话会覆盖源文件内容
-如果文件不存在,会新建文件
w+:
-不能读取文件
-写的话会覆盖源文件内容
-如果文件不存在,会创建文件并写入内容
a:
-只能写,不能读,读的话会清空文件内容
-文件指针会放在文件的末尾
-文件不存在的时候,会新建文件并写入,不会报错
-文件存在,写在源文件后面,不会清空文件内容
a+:
-只能写,不能读
-默认添加文件最后
-文件不存在,新建
示例:
#打开
f = open('passwd') #后面什么都不加,默认是 'r' 只读操作
#操作
print f.read()
f.write('westos') #因为是只读操作,所以不能写入,编译会报错
# print f.read()
#关闭 记住一定要关闭文件,否则会占用内存
f.close()
3.文件指针
问题:文件指针标记从哪个位置开始读取数据?
第一次打开文件时,通常文件指针会指向文件的开始位置
当执行了read方法后,文件指针会移动到读取内容的末尾
file = open('passwd') ##打开名为‘passwd’的文件
a = file.read()
print a ##输出读取的文件的内容
print type(a) ##输出a的类型 是字符串类型
print len(a) ##a输出的文件的长度
print '********' ##这个读取万文件后,指针停留在文件末尾
file.seek(0) ##恢复指针位置到文件最开始的位置
b = file.read() ##再次读取就会从头开始,如果没有file.seek
print len(b) ##这行代码的输出值是0
file.close() ##记住一定要关闭文件,否则会占用内存
4.正确读取大文件
#正确读取大文件
file = open('passwd')
#为什么要设定为无限循环
#因为我们不知道循环的条件
#我们不知道文件到底有多少行
while True:
text = file.readline() ##读取一行
#判断是否读取到了文件内容
#如果文件指针到文件最后一行,那么就读取不到内容
if not text:
break
print text
file.close()
5.练习
(1)要求:
打开一个已经有的文件,读取完整的内容,并写到另一个文件中去
#源文件以只读的方式打开
file_read = open('passwd')
file_copy = open('file_copy','w')
#从源文件中读取内容
a = file_read.read()
file_copy.write(a)
#关闭文件
file_read.close()
file_copy.close()
(2)创建文件data.txt,文件一共100行,每行存放一个1~100之间的整数
import random
f = open('data.txt','w+')
for i in range(10):
a = random.randint(1,100)
f.write('%d '%a)
f.close()
6.读取二进制文件
读取二进制文件的时候
rb wb ab
rb+ wb+ ab+
#读取二进制文件的内容
f1 = open('good.jpg',mode='rb')
a = f1.read()
f1.close()
f2 = open('李钟硕.png',mode='wb')
f2.write(a)
f2.close()
注意:读取二进制文件的前提是,当前路径下存在二进制文件(照片),如果没有的话,可以从网上下载一个,然后移动到当前路径下,才可以使用