为了账号安全,请及时绑定邮箱和手机立即绑定

Python文件处理

难度初级
时长 1小时39分
学习人数
综合评分9.43
161人评价 查看评价
9.6 内容实用
9.4 简洁易懂
9.3 逻辑清晰
  • 文件系统示意图


    查看全部
  • 文件close的原因

    5b45afa20001e4c012800720.jpg

    查看全部
  • 文件读写权限5b459ca70001b5c812800720.jpg

    查看全部
  • 字符串组成的列表
    查看全部
  • 使用普通方式打开文件,写入u'汉字'

    f = open('imooc.txt', 'r+')
    f.write('123')
    f.write(u'汉字') #ascii


    查看全部
  • 使用普通方式打开文件,写入u'慕课'

    f = open('imooc.txt', 'r+')
    f.write('123')
    f.write(u'慕课') #ascii


    查看全部
  • 使用普通方式打开文件,写入u'慕课'

    f = open('imooc.txt', 'r+')
    f.write('123')
    f.write(u'慕课') #ascii


    查看全部
  • 使用普通方式打开文件,写入u'慕课'

    f = open('imooc.txt', 'r+')
    f.write('123')
    f.write(u'慕课') #ascii


    查看全部
  • 文件写入和读取的问题:

    1. 写入文件后,必须打开才能读取写入的内容

    2. 读取文件后,无法重新再次读取读过的内容,必须关闭才可以。

    当对文件操作时,有文件内容指针定位当前文件所执行到的位置。当打开时,文件指针在文件起始位置。file.read(3)-->file.write('imooc'),文件指针在第八个位置。若不做其他操作,无法使文件指针归位。

    移动文件指针的方法:

    seek(偏移量,偏移相对位置)

    偏移量可为负数

    偏移相对位置:

    1. os.SEEK_SET:相对文件起始位置-->0

    2. os.SEEK_CUR:相对文件当前位置-->1

    3. os.SEEK_END:相对文件结尾位置-->2

    0123456789abcdefg
    f = open('imooc.txt', 'r+')
    import os
    f.tell() #返回当前文件的偏移-->0
    f.read(3) #-->012
    f.tell() #-->3
    f.seek(0, os.SEEK_SET) #将文件指针指到起始位置
    f.tell() #-->0
    
    f.seek(0, os.SEEK_END) #将文件指针指到结尾位置
    f.tell() #-->17
    f.read() #-->空
    
    f.seek(-5, os.SEEK_CUR) #将文件指针指到向前移动5个位置
    f.tell() #-->12
    
    f.seek(0, os.SEEK_END)
    f.tell() #-->17
    f.seek(-18, os.SEEK_CUR) #无效,超过文件大小
    查看全部
  • 文件关闭

    fileno属性:指文件的描述符。每打开一个文件,fileno自动加1,一直累加到1024,打开文件将会失败。

    list_f = []
    for i in rage(1025):
        list_f.append(open('imooc.txt', 'w'))
        print "%d: %d" % (i, list_f[i].fileno())  #-->too many open files

    良好的习惯:open后不需要时close


    查看全部
  • 文件写入

    write(str):参数为字符串

    writelines(sequence of strings):参数为可迭代对象(字符串、字符串组成的元组、字符串组成的迭代器、字符串组成的列表)

    f = open('imooc.py', 'w')
    f.write('test write')
    f.close()
    cat imooc.py
    
    f = open('imooc.py', 'w')
    f.writelines('123456')
    f.writelines(('1','2','3'))
    f.writelines(['1','2','3'])
    f.close()
    cat imooc.py
    
    f = open('imooc.py', 'w')
    f.write('111111') #若不调用close-->文件为空
    f.close() #若不主动调用close,内容写入文件缓冲区BUFFER,不写入磁盘文件;调用close时内核将缓冲内容写入磁盘

    缓存-->磁盘:

    1. 主动调用close()或flush()

    2. 写入数据量大于或等于写缓存

    f = open("imooc.txt", "w")
    for i in range(10000):
        f.write('test write ' + str(i) + '\n') #只写了一部分在磁盘
    f.close() #缓存同步到磁盘,内容全部写入


    查看全部
  • 文件读取

    f = open("imooc.txt") #三行www.imooc.com
    f.readline() #读取一行:www.imooc.com\n
    f.readline(100) #读取一行的100个字节,若size大于一行字节数,则读取一行,若小于,则读取一行的size字节::www.imooc.com\n
    f.readline(2) #读取一行的2个字节:ww
    f.readline(2) #继续读取一行的2个字节:w.
    f.readline() #继续读取一行的剩余字节:imooc.com\n
    
    list_c = f.readlines(1) #size不是具体读取的字节数,是python里定义的io.DEFAULT_BUFFER_SIZE:8192左右的字节数,最多能读取的字节数
    len(list_c) #-->586行(源数据增加10000行),每行14字节,读取8204,近似于8192
    f.close()

    readlines最多能读取缓冲buffer左右的字节,并不是读取完整个文件,但使用iter迭代器读取整个文件。

    f = open("imooc.txt")
    iter_f = iter(f) #文件传入迭代器,不是一次性读取所有内容,不消耗大量内存
    lines = 0
    for line in iter_f:
        lines += 1
    lines #10003
    查看全部
  • Linux环境下文件打开方式:

    f = open('1.txt') #不存在1.txt
    
    f = open('1.txt', 'w') #以只写方式打开,若当前文件不存在-->创建文件
    f.write('test write')
    f.close()
    cat 1.txt #文件内容:test write
    
    f = open('1.txt', 'w') #以只写方式打开,若当前文件存在-->清空文件
    f.close()
    cat 1.txt 
    
    f = open('hello.py', 'a') #以追加方式打开,在文件结尾处添加内容,若当前文件不存在-->创建文件
    f.write("print 'write test'")
    f.close()
    cat hello.py
    
    f = open('hello.py', 'r+') #以读写方式打开,从文件顶部开始写,覆盖之前内容
    f.write("test r+")
    f.close()
    cat hello.py
    
    f = open('hello.py', 'w+') #以读写方式打开,清空文件,若当前文件不存在-->创建文件
    f.read() #内容为空
    f.write('test w+ write')
    f.close()
    cat hello.py

    读取一张图片,若使普通方式(文本方式)打开时,不能读取正确信息。当以二进制方式打开时,可以读取正确信息。

    查看全部
  • 使用iter对文件进行操作
    查看全部
  • help() 可以查看一个api的说明
    查看全部
  • 文件打开方式
    查看全部
  • type(f) 查看对象的类型
    查看全部
  • write方法
    查看全部
  • write方法
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python中级课程 1、本课程在linux讲解,最好有linux开发环境 2、熟练掌握Python开发语言基础语法
老师告诉你能学到什么?
1、文件的基本概念 2、掌握文件的基本操作 3、了解文件属性及linux 系统的文件管理机制 4、掌握os模块对文件和目录的处理

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!