前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(十一) 初遇python甚是喜爱之Files文件读写操作

(十一) 初遇python甚是喜爱之Files文件读写操作

作者头像
XXXX-user
修改2019-07-30 10:54:54
6420
修改2019-07-30 10:54:54
举报
文章被收录于专栏:不仅仅是python不仅仅是python

各位读者大大们大家好,今天学习python的Files文件读写操作,并记录学习过程欢迎大家一起交流分享。

首先新建一个文本文件test.txt,内容如下:

代码语言:javascript
复制
hello world
hello you
hello me
hello python
hello universe

然后新建一个python文件命名为py3_file.py,在这个文件中进行操作代码编写:

代码语言:javascript
复制
#文件读写操作
#打开一个文件test.txt
#文件常见打开模式
#r:读文件
#w:写文件
#a:追加文件
#####读取文件操作#####
f = open('test.txt','r')
#打印文件名
print(f.name)#test.txt
#打印文件打开的模式
print(f.mode)#r
#关闭文件
f.close()
#使用with打开文件
#好处是不用关心文件是否关闭
#当我们退出with代码块后
#会自动关闭文件
with open('test.txt','r') as rf:
    pass
#验证文件是否已经关闭
print(rf.closed)#True
#试着在with代码块外执行读取数据
#print(rf.read())
#出现异常 文件已经关闭了
# ValueError: I/O operation on closed file.
#读取文件内容
with open('test.txt','r') as rf_obj:
    contents = rf_obj.read()
    print (contents)
#注意:当test.txt文件内容很少的时候
# 上边的代码没什么问题
#如果是一个非常大的文本文件
#直接去read()到内存中 会吃不消
#甚至出现打不开的情况
#改良如下使用readlines代替read
#一行一行读取,直到全部读取完毕
with open('test.txt','r') as rf_obj:
    contents = rf_obj.readlines()
    print (contents)
#运行得到的结果是一个list
#包含文件中的每一行内容
#这种方式显而易见对于很大的文件来说
#也是不合理的
#接下来继续改良
#使用readline()代替readlines()
#每次读取一行
with open('test.txt','r') as rf_obj:
    contents = rf_obj.readline()
    print(contents,end='')
#运行得到文本文件中的第一行数据
#这种方式读取数据需要写很多次readline()
#这里我们继续改良
#使用for循环迭代 替代readline()、readlines()
with open('test.txt','r') as rf_obj:
    for line in rf_obj:
        print(line,end='')
print ()
#这种方式不会一次读取所有内容到内存中
#一行一行的读取,就不比担心内存问题
#改良版的read(size)应对大文件读取
with open('test.txt','r') as rf_obj:
    size_to_read = 10#定义每次读取的大小
    contents = rf_obj.read(size_to_read)
    #rf_obj.tell()查看每次读取的大小
    #rf_obj.seek(0)寻址操作,从0的位置在开始读
    while(len(contents)>0):
        print(contents, end = '*')
        contents = rf_obj.read(size_to_read)
#####写入文件操作#####
with open('test.txt','w') as wf:
    wf.write('Hello EveryOne')
#使用w的写入模式要注意会清空原有文件中的
#所有内容,写入新的内容
#所以根据自己的需求这里要注意是使用w还是a
#接下来看seek操作
with open('test.txt','w') as wf:
    wf.write('Test')
    wf.seek(0)
    wf.write('R')
#以上代码释义:
#先将Test写入test.txt文件中
#然后文件寻址到开始位置索引0的地方
#这里是T
#然后将R写入第0个位置
#最终文件的内容为:Rest
###接下来做一个文件的拷贝功能#####
#流程为先读取一个文件,将内容写入一个新
#创建的文件中
with open('test.txt','r') as rf:
    with open('test_copy.txt', 'w') as wf:
        for line in rf:
            wf.write(line)
#图片的拷贝操作
#这里注意图片内容为字节类型
#所以这里文件打开模式需要调整
with open('r1000.jpg','rb') as rf:
    with open('r1000_copy.jpg', 'wb') as wf:
        chunk_size = 4096
        rf_chunk = rf.read(chunk_size)
        while len(rf_chunk) > 0:
            wf.write(rf_chunk)
            rf_chunk = rf.read(chunk_size)

运行结果:

代码语言:javascript
复制
test.txt
r
True
hello world
hello you
hello me
hello python
hello universe
['hello world\n', 'hello you\n', 'hello me\n', 'hello python\n', 'hello universe']
hello world
hello world
hello you
hello me
hello python
hello universe
hello worl*d
hello yo*u
hello me*
hello pyt*hon
hello *universe*

今天初学python的 Files文件读写操作学习就到这里!

关注公号

下面的是我的公众号二维码图片,欢迎关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yale记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关注公号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档