• python 文件处理(转载)


    本文给大家介绍Python文件处理相关知识,具体内容如下所示:

    出处:https://www.jb51.net/article/80204.htm

    1.文件的常见操作

    文件是日常编程中常用的操作,通常用于存储数据或应用系统的参数。python提供了os、os.path、shutil等模块处理文件,其中包括最常用的打开文件,读写文件,赋值文件和删除文件等函数。

    1.1文件的创建

    python3.+中移除了python2中的全局file()函数,还保留了open()函数。文件的打开或创建可以使用函数open()。该函数可以指定处理模式,设置打开的文件为只读,只写,可读写状态。open()的声明如下:

    1
    open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

    参数说明:

    •参数file是被打开的文件名称,如果文件file不存在,open()将创建名为name的文件,然后再打开该文件。

    •参数mode是指文件的打开模式。文件的打开模式请参照以下内容。

    •参数buffering是设置缓存模式。0表示不缓存,1表示缓存;如果大于1则表示缓冲区的大小,以字节为单位。

    •参数encoding是设置文件的字符编码格式。

    •open()函数会返回一个file对象,file 对象可以对文件进行各种操作 文件模式:

    1
    2
    3
    'r' open for reading (default)
    'w' open for writing, truncating the file first
    'x' create a new file and open it for writing

    创建一个新的文件,打开并写入

    1
    'a' open for writing, appending to the end of the file if it exists

    模式打开文件以追加

    1
    2
    3
    4
    'b' binary mode二进制模式打开,可与其他模式一起使用
    't' text mode (default)
    '+' open a disk file for updating (reading and writing)
    'U' universal newline mode (deprecated)支持所有的换行符号

    注意:图片、视频等文件必须使用b的模式进行读写。

    1
    2
    3
    4
    5
    6
    7
    8
    message = '''
    hello world,
    hello python,
    good time.
    '''
    f = open('test.txt','w')
    f.write(message)
    f.close()

    代码说明:

    •定义一个字符串变量

    •以只写模式创建一个文件并写入

    •将字符串变量写入文件

    •关闭文件

    1.2 文件的读取

    文件的读取有多种方法,可以使用readline()、readlines()、或read()函数读取文件。

    1.按行读取方式readline()

    readline()每次读取文件的一行,需要循环读取文件。但是当文件指针移动到文件的末尾是,依然使用readline()读取文件将出现错误。因此程序中需要添加一个判断语句,判断时间指针是否在文件的尾部,并且通过该语句中断循环。示例如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 使用readline模式读取文件
    f = open('test.txt','r')
    while True:
    line = f.readline()
    if line:
    print(line)
    else:
    break
    f.close()
    #如果line = f.readline(2)则表示每次循环只读取两字节的内容,直到行的末尾

    2.多行读取方式readlines()

    1
    2
    3
    4
    5
    6
    # 多行读取文件
    f = open('test.txt')
    lines = f.readlines()
    for line in lines:
    print(line)
    f.close()

    3.一次性读取方式read()

    读取文件最简单的方式就是使用read(),read()将文件中一次性读出所有内容,并赋值给字符串变量,但是当文件比较大的时候不建议使用read()的方式去读取文件,因为一次读取比较大的内容会消耗大量的内存,影响系统的性能。示例如下:

    1
    2
    3
    4
    5
    # 一次读取文件
    f = open('test.txt','r')
    lines = f.read()
    print(lines)
    f.close()

    文件指针:

    1
    2
    3
    4
    5
    6
    7
    8
    with open('test.txt','rb') as src:
    rd = src.read(100)
    print(rd)
    print(src.seek(src.tell()))
    rd = src.read(100)
    print(rd)
    print(src.seek(src.tell()))
    #每次读取100字节,然后返回指针的位置

    4.with函数

    通常我们使用open()打开一个文件并赋值给一个字符串变量来对文件进行操作,最后还需要进行手动关闭文件,这样写起来有点麻烦,下面我们可以使用with函数将文件打开与关闭写在一行函数上。

    1
    2
    3
    4
    with open('test.txt','r') as src:
    da = src.read()
    print(da)
    #只读模式打开文件并赋值给src,然后对文件进行操作即可,代码与使用open()来操作文件相同。

    1.3文件的写入

    文件的写入有多种方法,可以使用write(),也可以使用writelines()方法写入文件。write()可以将字符串写入文件,writelines()可以将列表写入文件。示例如下:

    1
    2
    3
    4
    5
    6
    m1 = 'hello world'
    l1 = ['good','time']
    f = open('test1.txt','w')
    f.write(m1)
    f.writelines(l1)
    f.close()

    文件的追加:

    1
    2
    3
    4
    m1 = 'hello python'
    f = open('test1.txt','a+')
    f.write(m1)
    f.close()

    1.4文件的删除

    文件的删除需要使用os模块和os.path模块,os模块提供了系统的环境、文件、目录等操作系统的函数。 对于文件来说比较常用的os模块的函数如下:

    •os.access(path,mode)#按照mode指定的权限进行访问
    •os.chmod(path,mode)#改变文件的访问权限,mode用UNIX的权限符号表示
    •os.open(filename,flag[,mode=0777])#按照mode指定的权限打开文件。默认情况下,给所有用户读、写、执行的权限
    •os.remove(path)#删除path指定的文件
    •os.rename(old,new)#重命名文件或目录,old表示原文件或目录,new表示新文件或目录
    •os.stat(path)#返回path指定文件的所有属性
    •os.fstat(path)#返回打开文件的所有属性
    •os.startfile(filepath[,operation])#启动关联程序打开文件。例如,打开一个html文件,将启动IE浏览器
    •os.tmpfile()#创建一个临时文件,文件创建在操作系统的临时目录中

    注意:os模块的open()函数与内建的open()函数的用法不同。

    os.path模块常用的函数如下:

    •os.path.abspath(path)#返回path所在的绝对路径
    •os.path.dirpath(path)#返回目录的路径
    •os.path.exists(path)#判断文件是否存在
    •os.path.getatime(filename)#返回文件的最后访问时间
    •os.path.getctime(filename)#返回文件的创建时间
    •os.path.getmtime(filename)#返回文件最后的修改时间
    •os.path.getsize(filename)#返回文件的大小

    os.path判断函数

    •os.path.isabs(s)#测试路径是否是绝对路径
    •os.path.isdir(path)#判断path指定的是否是目录
    •os.path.isfile(path)#判断path指定的是否是文件
    •os.path.split(p)#对路径进行分割,并以列表的方式返回
    •os.path.splitext(p)#从路径中分割文件的扩展名
    •os.path.splitdrive(p)#从路径中分割驱动器的名称
    •os.walk(top,func,arg)#遍历目录树

    示例如下:

    1
    2
    3
    4
    5
    6
    import os
    if os.path.exists('../test.txt'):
    os.remove('test.txt')
    print('is del')
    else:
    print('no')

    1.5文件的复制

    文件的复制有多种方法,下面我们来看一下第一种比较low的方式,就是读写的方式进行文件复制。示例如下:

    1
    2
    3
    4
    5
    6
    #使用read()、write()实现文件复制
    f1 = open('1.txt','r')
    f2 = open('2.txt','w')
    f2.write(f1.read())
    f2.close()
    f1.close()

    第二种方法:

    shutil模块,shutil模块是另外一个文件、目录的管理接口,提供了一些用于复制、目录的函数。copyfile()函数可以实现文件的复制,copyfile()函数的声明如下:
    shuil.copyfile(src,dst)
    •src表示源文件的路径,src是字符串类型
    •dst表示目标文件的路径,dst是字符串类型
    •src指向的文件复制到dst指向的文件

    示例如下:

    1
    2
    import shutil
    shutil.move('1.txt','2.txt')

    1.6文件的重命名

    os模块的函数rename()可以对文件或目录进行重命名。

    1
    2
    import os
    os.rename('1.txt','11.txt')

    使用shutil中的move()函数也可以实现文件重命名的目的。

    1
    2
    import shutil
    shutil.move('11.txt','1.txt')

    修改文件的后缀名:

    1
    2
    3
    4
    5
    6
    7
    import os
    files = os.listdir('.')
    for filename in files:
    li = os.path.splitext(filename)#返回后文件名和后缀名的列表
    if li[1] == '.html':
    newname = li[0] + '.htm'
    os.rename(filename,newname)

    glob模块用于对路径的匹配,返回符合给定条件的文件列表。glob模块的主要函数就是glob(),该函数返回符合同一匹配条件的多个文件。上面的呈现需要判断是否为html后缀,也可以使用glob()函数直接匹配文件名称。 匹配代码如下:

    1
    glob.glob('*.html')

    glob还可以对路径做更对的匹配。例如,匹配C盘中以w开头的目录中所有的文本文件。

    1
    glob.glob('C:\w*\*\txt')

    1.7文件的搜索和替换

    文件内容的搜索和替换可以使用字符串的查找和替换来实现。例如,在htllo.txt文件中查找字符串'hello',并统计'hello'出现的次数。代码如下:

    1
    python, equal to anything!

    以上内容给大家介绍了Python文件处理相关知识,希望对大家有所帮助!

  • 相关阅读:
    FastAdmin Shopro商城安装
    MYSQL ERROR 10060
    宝塔命令
    kdevtmpfsi挖矿病毒处理
    VUE安装
    原生JS请求(AJAX)
    Bootstrap: 模态框组件
    Bootstrap: 缩略图组件
    Bootstrap: 栅格系统
    Bootstrap: 下拉菜单组件 & 分页组件
  • 原文地址:https://www.cnblogs.com/lize19940412/p/10667175.html
Copyright © 2020-2023  润新知