资讯专栏INFORMATION COLUMN

这可能是最详细的Python文件操作

阿罗 / 1857人阅读

摘要:删除删除只能删除文件,若为目录则报错若文件正在使用,下会直接报错,下会在目录表中删除记录,但文件还在与一样的作用删除目录,目录必须为空,否则报错递归删除空目录删除整个目录不管此目录下有多少目录和文件新建新建新建文件夹,若倒数第二层文件夹不存

删除
# ==================删除==================
# 只能删除文件,若为目录则报错
# 若文件正在使用,Windows下会直接报错,Linux下会在目录表中删除记录,但文件还在
# 与os.unlink()一样的作用
os.remove(r"C:UsersMicrosoftDesktop111.exe")

# 删除目录,目录必须为空,否则报错OSError
os.rmdir(r"C:UsersMicrosoftDesktopaaa")
# 递归删除空目录
os.removedirs(r"C:UsersMicrosoftDesktop123")
# 删除整个目录(不管此目录下有多少目录和文件)
shutil.rmtree(r"C:UsersMicrosoftDesktopaaa")
# ======================================
新建
# ==================新建==================
# 新建文件夹,若倒数第二层文件夹不存在则会报错
os.mkdir(r"/home/python")
# 递归新建目录,若文件夹存在则报错
os.makedirs(r"C:UsersMicrosoftDesktopaaa666777")
# ======================================
复制
# ==================复制==================
# 复制文件,不能复制文件夹
shutil.copyfile(r"D:pythonpy11.txt", r"D:pythonpy21.txt")
# 复制文件,与copyfile不同的是,第二个可以参数可以使用文件夹路径
shutil.copy(r"D:pythonpy11.txt", r"D:pythonpy2")
# shutil.copy只复制文件内容,copy2还复制了创建时间、修改时间等信息,
shutil.copy2(r"D:pythonpy11.txt", r"D:pythonpy2")
# 复制整个文件夹,若目标目录已存在,则会报错
shutil.copytree(r"D:pythonpy1", r"D:pythonpy3py1")
# ======================================
移动
# ==================移动====================
# 移动文件或文件夹,可使用目录树形式
shutil.move(r"D:pythonpy1", r"D:pythonpy3py2")
# ========================================
重命名
# ==================重命名==================
# 重命名文件或目录,但不能这样:rename("/aaa/a.txt","/bbb/a.txt"),也不能同时重命名目录和文件
os.rename(r"C:UsersMicrosoftDesktopaaa5",r"C:UsersMicrosoftDesktopbb6")
# 重命名目录或文件
# 若同时重命名路径和文件,则会新建路径并将文件重命名后移动到新目录
# 如:os.renames("/aaa/b.txt","/bbb/c.txt"),则会在aaa同级目录新建bbb目录,并将b.txt重命名为c.txt后移动到bbb目录
os.renames(r"C:UsersMicrosoftDesktopaaa6",r"C:UsersMicrosoftDesktopaaa123")
# =======================================
路径相关
# ==================路径相关==================
# 获取文件的完整路径
os.path.abspath(r"script.py")
# 获取完整路径中的文件名,以下返回script.py,等价于os.path.split(path)[1]
os.path.basename(r"/home/python/script.py")
# 获取文件的绝对路径,参数也必须是全路径,另:即使文件不存在也会正常返回,等价于os.path.split(path)[0]
os.path.dirname(r"/home/python/script.py")
# 获取文件的文件名和扩展名,以下返回:("script", ".py")
os.path.splitext(r"script.py")
# 获取脚本运行目录
os.getcwd()
# 获取目录下文件列表,参数为空则为脚本运行目录,返回格式:["1.py","2.py"]
os.listdir(r"/home/python")
# 判断文件或路径是否存在
os.path.exists(r"/home/python")
# 判断目标是文件还是路径
os.path.isdir(r"/home/python")
os.path.isfile(r"/home/python")
# =========================================
遍历目录

两种方式:

os.walk()

os.listdir() 递归

os.walk
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

参数1:要遍历的目录

参数2:默认True为广度遍历,False为深度遍历

参数3:可空,callable 对象,当 walk 异常时,会调用

参数4:可空,如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)

import os 

list_dirs = os.walk(rootDir) 
for root, dirs, files in list_dirs:
    # root 所指的是当前正在遍历的这个文件夹的本身的地址
    # dirs 是一个list,内容是该文件夹中所有的目录的名字(不包括子目录)
    # files 同样是list , 内容是该文件夹中所有的文件(不包括子目录)
    print("======")
    for d in dirs:
        # 只输出遍历文件夹名
        print(os.path.join(root, d))
    for f in files:
        # 只输出遍历的文件名
        print(os.path.join(root, f))
os.listdir递归
os.listdir(path)

参数1:目录

返回path目录下的文件夹名和文件名,并按字母顺序排列

def Recursion(rootDir):
    for lists in os.listdir(rootDir):
        path = os.path.join(rootDir, lists)
        # 输出文件名或文件夹名
        print(path)
        # 判断是否为文件夹,如果是,则递归遍历
        # 如果不是则为文件,可执行具体逻辑
        if os.path.isdir(path):
            Recursion(path)
        else:
            pass
我的博客:花墨世界

公众号:花墨世界

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42922.html

相关文章

  • 可能是最详细部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI

    摘要:私有仓库是,并在中运行。不要使用或为主机名注册表服务需要由外部客户端访问或,默认为用于访问和令牌通知服务的协议。打开或关闭,默认打开打开此属性时,准备脚本创建私钥和根证书,用于生成验证注册表令牌。 上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的,还有什么 Docker...

    沈俭 评论0 收藏0
  • 总结:Python异常处理

    摘要:尽量使用内置的异常处理语句来替换语句,比如语句,方法。以上是最简单的重新抛出异常的做法,也是推荐的做法。除了包含所有的外还包含了,和三个异常。避免在语句块中干一些没意义的事情,捕获异常也是需要成本的。 异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你快速修复问题。在Python中,和不部分高级语言一样,使用了try/ex...

    douzifly 评论0 收藏0
  • python编码意义

    摘要:而他们的中文释义,就是对新手的最大陷阱编码。而码,也就是美国信息交换标准码,年发布,位字符编码中影响最大的一种。 编码,还是编码! python2的直钩——编码异常 当你用python打开一篇中文文档,准备读取里面的数据开始实验...当你处理好你的数据,打算打印出易于阅读的结果给boss检查...甚至当你刚刚开始编写自己的代码,就写了一句话... text = 什么鬼 只要你开始运行自...

    e10101 评论0 收藏0
  • Python解析邮件

    摘要:发送邮件好说,接收和下载邮件也好说。所以我们想要解析一封邮件把它拆成人能读懂的标题收发件人内容附件等,就必须得理解这套协议。了解协议,其实主要就是了解邮件的嵌套结构。另一种压缩方式,需要用库函数来解码。 邮件的解析是个大课题,远超一般人的预期。它远比发送邮件和接收邮件要复杂的多的多。这就是为什么网上中文外文搜邮件的问题,绝大多数都是讲发送的而讲接收的很少。 发送邮件好说,接收和下载邮件...

    tracymac7 评论0 收藏0
  • 【小白+python+selenium库+图片爬取+反爬+资料】超详细新手实现(01)webdriv

    摘要:且本小白也亲身经历了整个从小白到爬虫初入门的过程,因此就斗胆在上开一个栏目,以我的图片爬虫全实现过程为例,以期用更简单清晰详尽的方式来帮助更多小白应对更大多数的爬虫实际问题。 前言: 一个月前,博主在学过python(一年前)、会一点网络(能按F12)的情况下,凭着热血和兴趣,开始了pyth...

    Half 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<