zoukankan      html  css  js  c++  java
  • 文件处理

    一 介绍

    文件的概念:

    我们都知道计算机由三个部分组成:应用软件,操作系统,硬件。而应用软件需要储存数据,必须要向操作系统提出请求,

    操作系统会提供一个硬盘虚拟的感念。这个概念就是文件的概念!

    二 在python3中

    f=open('a.text.py',mode='r',encoding='utf-8')

    如果我们要在python中打开一个文件,

    首先,我们要输入路径,

    其次,要输入以什么样的方式打开。这是我写的是mode=(‘r’)(意思是指读)

    最后,我们要输入,用什么方式来编码的。“utf-8”

    要阅读此文件

    data=f.read()

     最后一点要关闭文件(很重要!!!!

    (电脑是不知道要关的,应用软件关闭了。但是,在内存中还没关掉,这样导致会占内存。)

    f.close()

    但很多同学会忘记这一点,所以有with结构来帮助with open('a.text','    pass

    with open('a.text','r')  as read_f,open('a.text','w') as write_f
    data=read_f.read()
    write_f.write(data)
    
    这样就不用f.close()来关闭文件了。

     强调

    当我们f=(open。。。)一个软件的时候,如果我们没有为open指定编码,那么有可能会出现乱码。window系统默认是gbk,mac系统是utf-8。所以,要注意以什么编码方式存储,就用什么编码方式来打开。

    二打开方式
    1.打开句式:open(‘路径’,‘模式’)(针对文本模式)
    f.open('a.text','r')
    ‘r’(文件只读,文件必须存在,如没有抛出异常) ‘w’(文件只可以写,不可以读,文件不存在,会自动创建,文件存在自动会清除) ‘a’ (文件不可以读,只可以追加,文件不存在则创建,文件存在会自动在末尾追加)

    2.非文本模式)

    我们只能用b模式,“b”模式存储方式是用字节方式来存储(可以存储文本模式,也可以存储图片.jgp模式,也可以存储视频.avi模式。但最大的区别就是不需要考虑字符编码)

    ‘rb’

    ‘wb’

    ‘aw’

    读取内容是字节类型,写入时也是要字节类型。不能指定编码

    #3 了解部分

    “+”表示:可以同时读写某个文件

    ‘r+’:读写【可以读,可以写】

    ‘w+’:写读【可以写,可以读】

    ‘a+’:写读【可以写,可以读】

    3.操作文件方法:

    #掌握
    f.read() #读取所有内容,光标移动到文件末尾
    f.readline() #读取一行内容,光标移动到第二行首部
    f.readlines() #读取每一行内容,存放于列表中
    
    f.write('1111
    222
    ') #针对文本模式的写,需要自己写换行符
    f.write('1111
    222
    '.encode('utf-8')) #针对b模式的写,需要自己写换行符
    f.writelines(['333
    ','444
    ']) #文件模式
    f.writelines([bytes('333
    ',encoding='utf-8'),'444
    '.encode('utf-8')]) #b模式
    
    #了解
    f.readable() #文件是否可读
    f.writable() #文件是否可读
    f.closed #文件是否关闭
    f.encoding #如果文件打开模式为b,则没有该属性
    f.flush() #立刻将文件内容从内存刷到硬盘
    f.name

     四 文件内光标移动;

    一: read(3):

      1. 文件打开方式为文本模式时,代表读取3个字符

      2. 文件打开方式为b模式时,代表读取3个字节

    (字符是元素,而字节是计量单位,类似于米,里面啊)

    二: 其余的文件内光标移动都是以字节为单位如seek,tell,truncate

    f.seek(3)
    意思是移动了三个字节

    注意:

      1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

      2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

    五 文件的修改

    文件存在于硬盘,只存在覆盖,不存在修改怎么一说,我们平时看到的修改都是模拟出来的效果。有两种方式来实现:

    第一种:将硬盘中的文件全部加载到内存中,在内存中可以修改,修改好之后在覆盖原文件上面。

    import os
         with open('a.text',‘r') as read_f,open('a.text.swap','w') as write_f:
        data=read_f.read()
        data=data.replace('alex','sb')
        write_f.write(data)
    os.remove('a.text)
    os.rename('a.text.swap','a.text')

    第二种:将硬盘中的文件一条一条读入内存,修改完毕之后写入新的文件,然后用新的文件来覆盖老的文件,实现修改。

    import os
         with open('a.text','r') as read_f,open('a.text.swap'.'w') as write_f:
               for line in read_f:
               if "alex " in line:
                    line=line.replace('alex','sb')
               write_f.write(line)
    os.remove('a.text')
    os.rename('a.text.swap','a.text')

    六 文件的复制

    import sys
    1=sys.argv.  #把命令行中的解释器后的空格分割的所有参数都存成列表
    src_file_path=1[1]
    dst_file_path=1[2]
    with open(r'%s' %src_file_path,mode='rb') as src_f,
    open(r'%s' %dat_file_path,mode='wb') as dst_f:
    
         for line in src_f:
             dst_f.write(line)
     



    
    
  • 相关阅读:
    实现 HTML页面 Table 标签分页打印
    windows定时休眠设置
    python画树
    anaconda历史版本
    枚举
    is 与 as 运算符举例
    Microsoft.ACE.OLEDB.12.0报错解决方法
    winform一个带自动完成功能的TextBox
    DWZ中整合第三方jQuery(kit日历控件)插件
    asp.net 使用NPOI,泛型反射,XML导入导出excel
  • 原文地址:https://www.cnblogs.com/wuchenyu/p/8631267.html
Copyright © 2011-2022 走看看