• 文件处理


    文件操作


    fp = open("test.txt",w)     直接打开一个文件,如果文件不存在则创建文件

    ##        形式一:
    with open("test.txt","w") as fp:
        print(pf.write())

      ##这里就不需要加 fp.close()了,自动会关闭的。

    ##     形式二:
    fp = open("test.txt","w") print(fp.write())
    pf.close()    ##注意:一定要手动关闭,不然内存资源会一直被占用


    • 读模式

    r    只读模式,必须打开一个已有的文件,且只能执行读操作。

    r+  读+追加模式,可读可写,与‘r’相同之处在于也是必须打开一个已有的文件,不同的是它可写可读,而且写与读不分先后,即随时都可进行读与写。(写为追加在文件末尾)

    读模式的功能:

    #####################################    r模式代码实现
    fp = open('test','r',encoding='utf8') print(fp.read(1)) ##size为一个字节的单位 print(fp.tell()) ## 当前指针的位置 print(fp.readline())

    print(fp.readlines(1))    ##  返回的是一个列表,列表里的一个元素代表一行
    ###########################  运行结果:
    1
    # 2 #3 3 #是一个test文件0
    4 #['这是一个test文件1 ']
    ##########################################  r+模式代码实现
    fp = open('test','r+',encoding='utf8')
    fp.write('这是新加write ')    ##  这里write会写在末尾
    print(fp.readline()) print(fp.tell()) fp.write('新加进去的 ')  ##  write会在末尾追加 print(fp.read()) ## 这里指针会放在最后面
    1 ################            运行结果:
    2 #这是一个test文件2
    3 #
    4 #25
    •  写模式

    w  只写模式,打开即默认创建一个新的空文件,当然若打开的是已有文件,则清空文件,且只能执行写操作。

    w+   写读模式,打开创建新文件,因此需要先把内容写进去在读。即保证文件有内容通过移动光标来读自己想要的部分。

    ###########    w模式:
    
    fp = open('test','w',encoding='utf8')
    fp.write('这是一个新建的write文件 ')    ##  write会覆盖原有内容
    fp.writelines(['writeline%d '%i for i in range(10)])  写入一个列表
    #########        w+模式:
    fp = open('test','w+',encoding='utf8')
    print(fp.readline())    ##    运行结果为空,当用r或者r+模式代开一个文件时,会将这个文件的内容清空
    fp.write('这是一个新建的write文件
    ')
    print(fp.read())    ##    运行结果为空,指针放在上一次写入的位置
    • 追加模式

    a   追加模式,若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写(追加在后面),不能读。即追加写。

    a+    追加读写模式,打开文件方式同‘a’一样,写方式也和'a'一样,但是可以读。且是任意时刻读写。需要注意的是你若刚用‘a+’打开一个文件,则不能立即读,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置。

    ###########        a模式:
    fp = open('test','a',encoding='utf8')
    fp.write('这是一个新建的a.write()文件')    ##  和w模式的区别在于:a模式会追加到文件末尾,不会覆盖文件的内容  
    print(fp.read())    ##    这里会报错,a模式只能写不能读
    ##########        a+模式:
    
    fp = open('test','a+',encoding='utf8')
    print(fp.read())    ##  用a+打开一个文件,会默认将指针放在末尾,所以这里打印为空
    fp.seek(0)
    print(fp.readline())
    fp.write('
    这是一个a+.write()文件
    ')
    • b模式

    rb     以二进制读模式打开
    wb     以二进制写模式打开 (参见 w )
    ab     以二进制追加模式打开 (参见 a )
    rb+    以二进制读写模式打开 (参见 r+ )
    wb+    以二进制读写模式打开 (参见 w+ )
    ab+    以二进制读写模式打开 (参见 a+ )

     

    #############    b模式:
    fp = open('test','rb')
    print(fp.readline())
    #########    运行结果:
    b'xe8xbfx99xe6x98xafxe4xb8x80xe4xb8xaaxe6x96xb0xe5xbbxbaxe7x9ax84writexe6x96x87xe4xbbxb6
    '
    ###    打印出的结果是一个二进制
    • 常用的函数

    fp.read([size])                     size为读取的长度,以byte为单位

    fp.readline([size])                 读一行,如果定义了size,有可能返回的只是一行的一部分

    fp.readlines([size])                把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

    fp.write(str)                      #把str写到文件中,write()并不会在str后加上一个换行符

    fp.writelines(seq)            #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

    fp.close()                        #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError

    fp.flush()                                      #把缓冲区的内容写入硬盘

    fp.fileno()                                      #返回一个长整型的”文件标签“

    fp.isatty()                                      #文件是否是一个终端设备文件(unix系统中的)

    fp.tell()                                         #返回文件操作标记的当前位置,以文件的开头为原点

    fp.next()                                       #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

    fp.seek(offset[,whence])              #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

    fp.truncate([size])                       #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

     

  • 相关阅读:
    使用signalr不使用连接服务器和前台的js的方法
    signalR client属性中的大致方法
    创建一个简单的signalr项目
    设计模式之工厂模式
    VS2012下没有ADO.NET实体数据模型
    迷你极客主机Station M1 开箱体验
    制作Station M1主机的Armbian启动卡
    StationP1的Ubuntu上安装gedit
    Station OS播放网络共享文件夹的媒体资源
    体验StationOS的推荐应用功能
  • 原文地址:https://www.cnblogs.com/maoxinjueluo/p/12550424.html
Copyright © 2020-2023  润新知