• day8


    文件操作初始:

    文件路径:d:xxxx.txt     

    编码方式:utf - 8,gbk,GB2312...

    操作方式:只读,只写,写读,读写,追加等。

     f = open('d:文件操作.txt',encoding='utf-8',mode='r')
     content = f.read()
     print(content)
     f.close()
    

     f.变量f_obj,f_handler,f_h,fh,文件句柄

      open()是python的内置函数(内部调用的是Windows的系统命令)

    1,打开文件,产生文件句柄

    2,对文件句柄进行操作

    3,关闭文件句柄 

    当文件路径过多层时,有两种方法

      1.在路径的最前面

      2.每个变成\

    绝对路径:d:xxxxxx.txt,从根目录开始找

    相对路径:当前目录,当前文件夹

    读:

      r: 对于r模式,mode可以默认不写

     f = open('d:文件操作.txt',encoding='GB2312',mode='r')
    content = f.read()
    print(content)
    f.close()
    

     还可以在当前文件夹中新建

     f = open('文件操作1',encoding='utf-8',mode='r')
    content = f.read()  #
     print(content)
    f.close()
    

     此方法是一次性全部读取,对于文件小的可以用,但是大型操作的不能直接read全部而是用下面的方法。

    read(n):r模式下,按照字符读取

     f = open('文件操作1',encoding='utf-8',mode='r')
     content = f.read(10)  # r 模式,按照字符读取。
     print(content)
     f.close()

    readline() :r模式下,按行读取数据

     f = open('文件操作1',encoding='utf-8',mode='r')
     print(f.readline()) 
     print(f.readline()) 
     print(f.readline()) 
     print(f.readline()) 
     print(f.readline()) 
     print(f.readline()) 
     f.close() 

    按行读取,返回一个list

     f = open('文件操作1',encoding='utf-8',mode='r')
     content = f.readlines()
     print(content)
     f.close()
    

     for循环

     f = open('文件操作1',encoding='utf-8',mode='r')
    for line in f:
         print(line.strip())
     f.close()
    

    rb:文件操作中,凡是带b字母,都是与非文字类文件相关的,rb,wb.ab.....

    f = open('美女1.jpg',mode='rb')
    content = f.read()
    print(content)
    f.close()
    

     也可以按照字节读取,一个中文三个字节

     f = open('文件操作1',mode='rb')
     content = f.read(9)  # rb 模式 n 按照字节读取。
     print(content)
     f.close() 

    r+ 读写:先读后追加

    f = open('文件操作1',encoding='utf-8',mode='r+')
    content = f.read()
    print(content)
    f.write('666')
    f.close()
    

    或者设定从那个地方开始读取,read(3)就是只读取三个字符

     f = open('文件操作1',encoding='utf-8',mode='r+')
     content = f.read(3)
     print(content)
     f.write('666')
     f.close() 

    不读直接写会直接从开始覆盖

     f = open('文件操作1',encoding='utf-8',mode='r+')
     f.write('深圳你好')
     f.close()

    写,w:没有文件,创造文件也要写,有文件,先清空,后写入

     f = open('文件操作2', encoding='utf-8',mode='w')
     f.write('深圳市南山区,福田区,罗湖区。。。')
     f.close()  

    wb,读写,把 ‘美女1.JPG’ 读取然后写到 ‘美女2.JPG’

     f = open('美女1.jpg',mode='rb')
     content = f.read()
     print(content)
    
     f1 = open(' 美女2.jpg',mode='wb')
     f1.write(content)
     f.close()
     f1.close() 

    w+:写读

     f = open('文件操作2', encoding='utf-8',mode='w+')
     f.write('深圳市南山区,福田区,罗湖区。。。')
     f.seek(3)  # 调整光标
     content = f.read()
     print(content)
     f.close()

    追加:

    a:没有文件,创建文件也要写,有文件直接在后面追加

     f = open('文件操作3', encoding='utf-8',mode='a')
     f.write('
    南方水土好。。。')
     f.close()

    其他方法:readale,writable,seek

     f = open('文件操作1',encoding='utf-8')
     if f.writable():
         content = f.read()
         print(content)
     f.close()
    

     seek:调整光标到开始,seek(0)调整光标到结尾seek(0,2)

     f = open('文件操作1',encoding='utf-8')
     f.seek(6) # 按照字节去移动光标
     content = f.read()
     print(content)
     f.close()
    
     f = open('文件操作1',mode='rb')
     print(f.read())
     f.seek(6) # 按照字节去移动光标
     content = f.read()
     print(content)
     f.close()
    

    tell告知光标的位置

     f = open('文件操作1',encoding='utf-8')
     f.seek(0,2) # 按照字节去移动光标
     print(f.tell())
     f.close()

    truncate 要在writable模式下进行截取

    r + a+...不能在w模式下使用,对原文进行截取

     f = open('文件操作1',encoding='utf-8',mode='r+')
     print(f.truncate(6))
     f.close()

    主动关闭文件句柄:

     with open('文件操作2',encoding='utf-8') as f1:
         print(f1.read())

    开启多个文件句柄:

     with open('文件操作2',encoding='utf-8') as f1,
             open('文件操作3',encoding='utf-8',mode='w') as f2:
         print(f1.read())
         f2.write('666666')
    

    文件的改的操作:

      1.以只读模式打开原文件,产生一个文件句柄f1.

      2.以写的模式创建一个新文件,产生一个文件句柄f2

      3.读取原文件内容,进行修改,并将修改后的写入新文件

      4.将原文件删除

      5.将新文件重命名成原文件

    import os
    with open('alex的深度剖析', encoding='utf-8') as f1,
        open('alex的深度解析.bak',encoding='utf-8',mode='w') as f2:
        for line in f1:
            new_line = line.replace('SB','alex')
            f2.write(new_line)
    os.remove('alex的深度剖析')
    os.rename('alex的深度解析.bak', 'alex的深度剖析')
    

      

  • 相关阅读:
    更改PHP配置文件php.ini解决xmlhttp的utf8乱码
    php 单引号 双引号 区别
    zend soap looks like we got no XML document
    使用UltraEdit32编辑器格式化源码功能 XML、Java、C/C++、C#
    php str_replace 单引号 双引号 区别
    PHP将XML文件转换成PHP数组
    简述PHP4和PHP5版本下解析XML文档的操作方法
    HowTo: Fix SimpleXML CDATA problem in php
    XML中 CDATA and PCDATA 的区别
    php 生成xml 的四种方式
  • 原文地址:https://www.cnblogs.com/beriuta/p/9469120.html
Copyright © 2020-2023  润新知