基于python下的文件操作

操作文件的函数/方法:

操作文件的函数/方法:
    # 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')

在这里插入图片描述
追加的文件内容:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值