栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python中文件操作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python中文件操作

本文目录
  • 一、文件操作
    • 1.1、文件读取
    • 1.2、文件追加和写操作
    • 1.3、文件复制
  • 二、os模块
    • 2.1、绝对路径
    • 2.2、递归复制文件夹

本文大概2800字,阅读大概需要8分钟。

一、文件操作

opne(path, mode) 常用参数(path路径,mode模式)。
open函数返回打开文件的流,可以在这个流上进行相对应的操作。mode模式默认为r
模式:

r: read 读(纯文本)、w: write写 (纯文本)
rb: read binary 读(二进制)、wb: write binary写 (二进制)

1.1、文件读取

读取文件:

read() 读取全部
readline() 每次读取一行内容
readlines() 读取所有的行保存到列表中
readable() 判断是否可读

例:读取全部

stream = open(r'/Users/justin/Desktop/python_dic.txt')

container = stream.read()
print(container)

效果:


也可以读取图片,不过图片是二进制的,必须用rb才能读取,否则会保存,例如:

stream = open(r'/Users/justin/Desktop/python.jpg', mode="rb")

container = stream.read()
print(container)


因为终端显示不了图片,所以可以看到显示一堆二进制。


1.2、文件追加和写操作

写操作:
模式只要是w模式的话,就是写模式,w的话每次写的话,都会把里面的内容清空重新写。
写文件:

stream = open(r'/Users/justin/Desktop/python_dic.txt', 'w')
w = 'file fourth line'
stream.write(w)
stream.close() #  释放资源

效果:

可以看到原先里面的内容没了。


追加操作:
模式为a模式,就是追加操作:

stream = open(r'/Users/justin/Desktop/python_dic.txt', 'a')
w = 'nfile fifth line'
stream.write(w)
stream.close()


1.3、文件复制

with结合open使用,可以帮助我们自动释放资源。

现在我的桌面有一张python.jpg,我要在下载文件夹复制一张一样的图片,例:

with open(r'/Users/justin/Desktop/python.jpg', 'rb') as stream:
    container = stream.read()
    with open(r'/Users/justin/Downloads/python.jpg', 'wb') as wstream:
        wstream.write(container)

效果:

可以看到复制过来了。


二、os模块

如果我们需要复制文件夹的话就必须引用os模块进行处理。

2.1、绝对路径

os.path.isabs(路径),判断是否为绝对路径,返回布尔类型。

import os

print(os.path.isabs('/Users/justin/Desktop/python.jpg'))


获取当前文件的绝对路径:
os.path.abspath(__file__) 或者os.getcwd()

import os

path = os.path.abspath(__file__)
path1 = os.getcwd()

print(path)
print(path1)

效果:


2.2、递归复制文件夹

创建一个文件夹:os.mkdir(r'/Users/justin/Desktop/a1')

删除一个文件夹(只能删除不是空的文件夹):os.rmdir(r'/Users/justin/Desktop/a1')

遍历一个文件夹里的文件或者文件夹:os.listdir()

import os


# 封装成函数
def copy(src, target):
    if os.path.exists(target):
        pass
    else:
        os.mkdir(target)
    # 获取文件夹里的内容
    filelist = os.listdir(src)
    # 遍历列表
    for file in filelist:
        # 拼接路径
        path = os.path.join(src, file)
        # 判断是文件还是文件夹
        if os.path.isdir(path):
            # 如果是文件夹,递归调用copy
            # 拼接并且创建新的文件夹
            target_path1 = os.path.join(target, file)
            os.mkdir(target_path1)
            copy(path, target_path1)
        else:
            # 不是文件夹直接进行复制
            with open(path, 'rb') as rstream:
                container = rstream.read()
                path1 = os.path.join(target, file)
                with open(path1, 'wb') as wstream:
                    wstream.write(container)
    else:
        print('复制完毕')


# 调用函数
copy('/Users/justin/Desktop/a1', '/Users/justin/Desktop/a2')


效果:

可以看到这里我们就实现了文件夹的递归复制。

如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号