操作文件的函数/方法:
操作文件的函数/方法:
# python中一切皆对象
open:打开文件,并且返回文件操作对象
read:将文件内容读取到内存
write:将指定文件内容写入文件
close:关闭文件
open函数负责打开文件,并且返回文件对象
read/write/close三个方法都需要通过文件对象来调用
read方法--读取文件
open函数的第一个参数就是要打开的文件名(文件名区分大小写)
如果文件存在,返回文件的操作对象
如果文件不存在,会抛出异常
read方法可以一次性读入并返回文件的所有内容
close方法负责关闭文件
read方法和readline方法:
按行读取文件:
read方法默认会把文件的所有内容读取到内存中,如果文件太大,对文件的占用会非常严重
readline方法:
readline方法可以一次性读取一行内容,方法执行后,会把文件指针移动到下一行,准备再次读取
读取文件:
文件就是将数据保存下来,以二进制,文本文件和二进制文件
# 如果忘记关闭文件,会造成系统消耗,而且会影响到后续对文件的访问
# 1.打开文件
file = open('xfl')
# 2.操作文件 读/写
# read方法:读取文件内容(一次性返回文件所有内容)
text = file.read()
print text
# 3.关闭文件
# close方法:负责关闭文件
file.close()
# 在开发中,通常会先编写打开和关闭的代码
自己编写一个文件在当前目录方便读取,也可以访问系统文件加上绝对路径即可:
测试结果:
文件指针:
文件指针:文件指针标记从哪个位置开始读取文件。第一次打开文件时,通常文件指针会指向文件的开始位置,当执行了
read方法后,文件指针会移动到读取内容的末尾。
文件指针01:
# 1.打开文件
file = open('xfl')
# 2.操作文件 读/写
# read方法:读取文件内容(一次性返回文件所有内容)
text = file.read()
print text
print '$' * 30
# 第一次读取的时候,文件指针移动到了文件的末尾
# 再次调用不会读取到任何内容
text = file.read()
print text
# 3.关闭文件
# close方法:负责关闭文件
file.close()
read方法用kiosk用户读取超级用户文件:(报错操作不允许)
[kiosk@foundation84 Desktop]$ su
[root@foundation84 Desktop]# cd /root/
[root@foundation84 ~]# touch xfl 建立文件
[root@foundation84 ~]# pwd 查看当前路径
/root
操作不会被允许:
# 1.打开文件
# 可以读取kiosk用户拥有权限的文件,不可以读取root用户
file = open('/root/xfl')
# 2.操作文件 读/写
# read方法:读取文件内容(一次性返回文件所有内容)
text = file.read()
print text
# 3.关闭文件
# close方法:负责关闭文件
file.close()
readline方式实现逐行读取:(保证了大文件不会浪费内存)
# 读取大文件的正确姿势
file = open('/home/kiosk/Desktop/day07/笔记')
# 为什么要写成死循环:因为我们不知道要读取的文件到底有多大
while True:
text = file.readline()
# 如果文件指针到文件的最后一行,就读取不到内容了
if not text:
break
# 每读取一行,末尾都自动有了一个\n
print text
file.close()
覆盖文件写入:
打开文件的方式:
name = open('文件名','访问方式')
以写的方式打开文件:如果该文件存在,文件会被覆盖:如果文件不存在,创建文件并写入
# 1.打开文件
file = open('xfl', 'w')
# 2.写入文件
file.write('xfl')
# 3.关闭文件
file.close()
文件内容被覆盖:
追加文件写入:
以追加方式打开文件:如果该文件存在,文件指针会放在文件的末尾,如果文件不存在,创建文件并写入。
# 1.打开文件
file = open('xyy','a')
# 2.写入文件
file.write('xyy')
# 3.关闭文件
file.close()
文件已经被改变:
普通文件的复制:
read方法复制文件
# 1.打开文件
# 源文件以只读方式打开
file_read = open('xfl')
file_write = open('xyy','w')
# 从源文件中读取内容
text = file_read.read()
# 将读取到的内容写到目标文件中
file_write.write(text)
# 关闭文件
file_write.close()
file_read.close()
不存在的文件会被新建写入:
大文件的复制:
# 打开大文件
file = open('/home/kiosk/Desktop/day07/笔记')
file_write = open('bb', 'w')
# 读取
while True:
text = file.readline()
if not text:
break
file_write.write(text)
# 关闭文件
file.close()
file_write.close()
复制过后的文件查看:
with关键字打开文件:
关键字with在不需要访问文件后将其关闭,在这个程序中,我们调用了open(),但没有调用close();你也可以调用open()和close()
来打开和关闭文件,但这样作时,如果程序存在bug,导致close()语句没有执行,文件将不会关闭,未妥善的关闭文件可能会导致
文件丢失或受损,如果在程序中过早的调用close(),你会发现需要使用文件时它已经关闭(无法访问),这会导致更多的错误,
你并非在任何情况下都能轻松的确定文件关闭的恰当时机通过使用with结构,可让python去确定你只管打开文件,并在需要的时
候使用它,python会在合适的时间自动将其关闭。
with01:
with open('pi_digit') as file_object:
contents = file_object.read()
print contents
打开的文件:
with02逐行读取文件:
filename = 'pi_digit'
with open(filename) as file_object:
for line in file_object:
print line
with03:
filename = 'pi_digit'
with open(filename) as file_object:
lines = file_object.readline()
print lines
for line in lines:
print line
with04:(已经存在的会覆盖文件,未存在的文件会新建。写入模式操作)
filename = 'linux'
with open(filename,'w') as file_object:
file_object.write('I love python\n')
file_object.write('I love linux\n')
写入的文件内容:
with05:(追加文件)
filename = 'linux'
with open(filename,'a') as file_object:
file_object.write('I love python\n')
file_object.write('I love linux\n')
追加的文件内容: