zoukankan      html  css  js  c++  java
  • python基础之文件操作

    文件操作首先做的是,打开文件,打开文件有两种方法open(...) 和  file(...),本质上前者在内部会调用后者来进行文件操作,但是一般都用open()

    操作文件包括了文件的读、写和关闭,首先来谈谈打开方式:当我们执行 文件句柄 = open('文件路径''模式')操作的时候,要传递给open方法一个表示模式的参数:

    来段代码演示一下

    f = open(d:..,mode='r','encodeing=utf-8')      #文件句柄 = open('文件路径''模式')  路径分为相对路径和绝对路径

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,先写再读。【这个方法打开文件会清空原本文件中的所有内容,将新的内容写进去,之后也可读取已经写入的内容】
    • a+,同a

    "U"表示在读取时,可以将 自动转换成 (注意:只能与 r 或 r+ 模式同使用)

    • rU
    • r+U
    • rbU
    • rb+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab
    #用rb打开不需要编码解码,用在非文字的读写
    # f = open('d作品模特主妇护士班主任',mode='r')
    # content = f.read()
    # print(content)
    # f.close()
    #
    #只写 对于W,没有此文件就会创建
    # f = open('log',mode='w',encoding='utf-8')
    # f.write('骑兵步兵')
    # f.close()

    #先将源文件内容全部清除,再写
    # f = open('log',mode='w',encoding='utf-8')
    # f.write('高清')
    # f.close()
    # f = open('log',mode='wb')
    # f.write('剧情'.encode('utf-8')) #endode后面跟的是所用软件默认的编码方式,否则会报错
    # f.close()


    #追加 r,rb
    # f = open('log',mode='a',encoding='utf-8')
    # f.write('佳琪')
    # f.close()

    #追加写
    #f = open('log',mode='ab')
    # f.write('佳琪'.encode('utf-8'))
    # f.close()

    #读写
    # f = open('log',mode='r+',encoding='utf-8')
    # f.write('佳琪')
    # print(f.read())
    # f.close()

    #读写的bytes类型,r+b也是读写,但是是以bytes类型,最常用r+
    # f = open('log',mode='r+b')
    # print(f.read())
    # f.write('佳琪'.encode('utf-8'))
    # print(f.read())
    # f.close()

    #w+写读,只要有w都是先清除再写
    # f = open('log',mode='w+',encoding='utf-8')
    # f.write('佳琪')
    # print(f.read())
    # f.close()
    # f = open('log',mode='w+',encoding='utf-8')
    # f.write('佳琪')
    # print(f.read())
    # f.close()

    #功能详解 read(这里放数字,放几就按照想要读取的文件(字符)最小单位读取)
    # f = open('log',mode='w+',encoding='utf-8')
    # countent = f.read(2)
    # print(countent)

    #断点续传***** tell告诉你光标的位置,然后再seek把光标调到这个位置就可以实现断点续传


    #f.readline()一行一行读,只能读第一行,想读下面就调光标
    #f。readlines()每一行当成列表中的一个元素,添加到列表中
    #f.truncate(这里填截取的数字)在原文件文件截取


    #open打开文件是依赖了操作系统的提供的途径
    #操作系统有自己的编码,open在打开文件的时候默认使用操作系统的编码
    #win gbk mac/linux utf-8

    #习惯叫 f file f_obj f_handler fh
    # print(f.writable()) #判断文件是否可写
    # print(f.readable()) #判断文件是否可读
    # f.write('7018201890') #写文件的时候需要写数字,需要把数字转换成字符串
    # f.write('aasjgdlwhoojfjdaj')
    # f.write('iq349jdsh ')
    # f.write('aks')
    # f.write(' sdgawo') #文件的换行
    # f.write('志强德胜') #utf-8 unicode gbk
    f.close()


    #找到文件详解:文件与py的执行文件在相同路径下,直接用文件的名字就可以打开文件
    #文件与py的执行文件不在相同路径下,用绝对路径找到文件
    #文件的路径,需要用取消转译的方式来表示:1.\ 2.r''
    #如果以写文件的方式打开一个文件,那么不存在的文件会被创建,存在的文件之前的内容会被清空
    ' \n'
    f = open(r'C:UsersAdministratorDesktops8_tmp.txt','w',encoding='utf-8') #文件路径、操作模式、编码
    f.write('哈哈哈')
    f.close()

    #关闭文件详解
    #操作系统级别的关闭文件资源:f.close() 必须写
    #del f主动释放了一个python程序内存中的变量 可写可不写

    #1.读文件的第一种方式:read方法,用read方法会一次性的读出文件中的所有内容
    2.读一部分内容:read(n),指定读n个单位
    #3.读文件的第三种方式:按照行读,每次执行readline就会往下读一行
    # content = f.readline()
    #5.读:最常用
    f = open('歌词',encoding='utf-8')
    for l in f:
    print(l.strip())


    f = open('shoplist',encoding='utf-8') #读文件并整理成需要的数据类型
    goods_list = []
    for line in f:
    if line.strip():
    goods_dic = {'name':None,'price':None}
    line = line.strip()
    goods_lst = line.split()
    print(goods_lst)
    goods_dic['name'] = goods_lst[0]
    goods_dic['price'] = goods_lst[1]
    goods_list.append(goods_dic)
    print(goods_list)
    f.close()

    # f = open('shoplist',encoding='utf-8') #只显示文件中有内容的行
    # goods_list = []
    # for line in f:
    # if line.strip():
    # print(line.strip())
    # f.close()

    # f = open('歌词','rb')
    # f.close()
    #b:图片、音乐、视频等任何文件
    #传输:上传、下载
    #网络编程:

    #修改文件的编码——非常不重要,不重要程度五颗星
    #utf-8 用utf8的方式打开一个文件
    #读文件里的内容str
    #将读出来的内容转换成gbk
    #以gbk的方式打开另一个文件
    #写入


    #a+
    # f = open('shoplist','a+',encoding='utf-8')
    # print(f.readable())
    # f.write(' computer 6000 5')
    # f.write(' computer 6000 5')
    # f.write(' computer 6000 5')
    # f.write(' computer 6000 5')
    # f.close()


    #1.被动接受知识 - 主动提出问题
    #2.主动的找到问题,并且找到对应的解决方法
    #3.主动的学习

    # r+ 可读可写:
    #1.先读后写:写是追写
    #2.先写后读:从头开始写
    # f = open('歌词','r+',encoding='utf-8')
    # line = f.readline()
    # print(line)
    # f.write('0000')
    # f.close()
    # w+ 可写可读:一上来文件就清空了,
    # 尽管可读:1.但是你读出来的内容是你这次打开文件新写入的
    # 2.光标在最后,需要主动移动光标才可读
    # f = open('歌词','w+',encoding='utf-8')
    # f.write('abc ')
    # f.write('及哈哈哈')
    # f.seek(0)
    # print(f.read())
    # f.close()
    # a+ 追加可读
    # f = open('歌词','a+',encoding='utf-8')
    # f.write(' qq星')
    # f.seek(0)
    # print(f.read())
    # f.close()


    #一般情况下:文件操作,要么读,要么写,很少会用到读写、写读同时用的
    #常用的:
    #r、w、a
    #rb、wb、ab,不需要指定编码了
    #
    # f = open('歌词','rb')
    # content = f.read()
    # f.close()
    # print(content)
    # f2 = open('歌词2','wb')
    # f2.write(content)
    # f2.close()


    # print('readline : ',content.strip()) #strip去掉空格、制表符、换行符
    # content2 = f.readline()
    # print(content2.strip())
    #4.读文件的第四种方式:readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表

    f = open('歌词','r+',encoding='utf-8')
    #seek 光标移动到第几个字节的位置
    # f.seek(0) 移动到最开始
    # f.seek(0,2) 移动到最末尾
    f.truncate(3) #从文件开始的位置只保留指定字节的内容
    # f.write('我可写了啊')
    #tell 告诉我光标在第几个字节
    #seek移动光标到指定位置
    # content = f.readline()
    # print(content.strip())
    #tell告诉你当前光标所在的位置
    # print(f.tell())
    # f.seek(4) #光标移动到三个字节的地方‘ ’
    # content = f.read(1) #读一个字符
    # print('***',content,'***')
    # content = f.readline()
    # print(content.strip())
    # print(f.tell())
    f.close()



    #tell
    #seek:去最开始、去最结尾
    #truncate:保留n个字节

    
    
  • 相关阅读:
    Sublime Text 3065
    FBX .NET
    macbook pro的usb串口失效的的处理方法
    CMAKE使用
    Ctrl+Scroll改变所有Editor的缩放比例 (Code::Blocks)
    如何在Mac OSX 10.10上安装GDB
    yum安装指定(特定)版本(旧版本)软件包的方法
    MinGW: TOO MANY SECTIONS issue
    轻量级Image Library
    CodeLite的姿势
  • 原文地址:https://www.cnblogs.com/ddjl/p/8111299.html
Copyright © 2011-2022 走看看