zoukankan      html  css  js  c++  java
  • python学习笔记之--目录的操作

    >>> import os  #引入目录操作的包os
    >>> os.getcwd(#获取当前的工作目录  c:current   w:wording   d:directory
    'C:\Users\dell'
    >>>
    >>> os.chdir("d:\pic")   #chdir切换目录
    >>> os.getcwd()
    'd:\pic'
    >>> os.listdir()  #查看当前目录下有什么文件(只显示第一层),括号里可以指定参数路
    ['1.jpg', 'baidu.html']
     
    >>> import os.path
    >>> os.path.isdir("d:\pic")   #isdir判断是否是目录
    True
    >>> os.path.isdir("d:\pic\1.jpg")
    False
    >>> os.path.isdir("d:\a.txt")
    False
    >>> os.path.isfile("d:\a.txt")   #isfile判断是否是文件
    True
    >>>
     
     
     
    小练习:统计一个目录下(一层目录),统计一下有多个文件
    统计一下有多少个目录
    算法:
    1 定义文件计数的变量
    2 定义文件夹计数的变量,并赋值0
    3 使用os.listdir()获取所有的文件和目录名称,这个返回值是列表
    4 使用for 进行遍历,使用os.path.isdir和isfile来分别判断是文件还是目录
    如果是文件,则在文件计数的变量上+1,否则在目录计数的变量上加一
    5 输出统计结果:文件计数和目录计数的变量值
    import os
    import os.path
    file_count = 0
    dir_count =0
     
    for i in os.listdir("d:\pic"):
        print("取出的内容:",i)
        if os.path.isfile("d:\pic\"+i):
            file_count+=1
        else:
            dir_count+=1
    print("文件个数:%s" %file_count)
    print("目录个数:%s" %dir_count)
     
     
     
    >>> os.getcwd()
    'd:\pic'
    >>> os.remove("d:\pic\1.jpg")    #删除文件,只能一次删除一个文件
    >>> os.listdir()
    ['baidu.html']
    >>>
     
    >>> os.mkdir("d:\pic\testman")   #创建目录
    >>> os.mkdir("d:\pic\testman\testman1")
    >>> os.mkdir("d:\pic\testman\testman1\testman3")
    >>> os.mkdir("d:\pic\testman\testman1\testman4")
    >>>
     
    #删除目录
    >>> os.mkdir("d:\pic\testman")
    >>> os.mkdir("d:\pic\testman\testman1")
    >>> os.mkdir("d:\pic\testman\testman1\testman3")
    >>> os.mkdir("d:\pic\testman\testman1\testman4")
    >>> os.removedirs("d:\pic\testman\testman1\testman3")  
    >>> os.removedirs("d:\pic\testman\testman1\testman4")   #删testman4的时候把它的上级testman1和上上级testman中,只要是非空的目录一并删了,递归删除空目录
    从路径的下面开始删除空目录,如果遇到了某个
    目录非空(包含子目录或者文件)就停止删除目录了 
     
    os.removedirs() 方法用于递归删除目录。
    像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。
     
    os.remove() 方法用于删除指定路径的文件。
    如果指定的路径是一个目录,将抛出OSError。
    在Unix, Windows中有效
     
    >>> os.getcwd()
    'd:\pic'
    >>> os.path.isabs("a.txt")  #判断是否是绝对路径
    False
    >>> os.path.isabs("d:\a.txt")
    True
    >>>
    >>> if not os.path.exists("e:\pic1\2.txt"):
    ...     with open("e:\pic1\2.txt","w") as fp:
    ...         fp.write("")
     
    创建一个10级目录,每个目录的名字从gloryroad1-10,每个目录创建一个文件,文件的名字是1-10.txt,文件内容写上文件名
    算法:
    1 写一个for 循环,循环10次
    2 在循环体下,创建一个目录为gloroadi(i是循环的变量值),os.chdir进入到新创建的目录,然后用with方法创建文件,
    文件名使用i变量+".txt"的方式来拼接文件名,然后使用w模式,给文件写内容,写的文件内容就是拼接的文件名
    import os
    dir_name = "glroyroad"
    os.chdir("d:\pic")
    for i in range(1,11):
        os.mkdir(dir_name+str(i))
        os.chdir(dir_name+str(i))
        with open(str(i)+".txt","w") as fp:
            fp.write(str(i)+".txt")
     
     
    >>> os.path.split("d:\pic\bd.html")   #切割文件名和文件路径
    ('d:\pic', 'bd.html')
    >>> os.path.split("d:\pic\bd.html")[0]  #获取文件路径
    'd:\pic'
    >>> os.path.split("d:\pic\bd.html")[1]   #获取文件名
    'bd.html'
    >>>
    ##等同于下面的两个api
     
    >>> os.listdir()
    ['baidu.html']
    >>> os.listdir("d:\")
    ['$RECYCLE.BIN', '360downloads', '360WiFi', '360极速浏览器下载', '360驱动大师目录', 'a.py', 'a.txt', 'aa.py', 'apache-maven-3.6.1', 'apache-tomcat-8.5.40', 'apache-tomcat-8.5.43', 'AutoTestLog.log', 'b.txt', 'BaiduNetdiskDownload', 'CloudMusic', 'dataDriveRreport.log', 'fdf98c88a68350d8deab4a0ae668ba20', 'iDownload', 'library_data.txt', 'LR', 'mgtv', 'mgtv.cache', 'packagea', 'php', 'pic', 'python', 'qq.jtl', 'road', 'sample.xlsx', 'sohu.jtl', 'System Volume Information', 'VM box', 'wamp', 'Youku Files', '__pycache__', '常用文档', '软件', '迅雷下载']
    >>> os.path.dirname("d:\pic")   #获取路径名
    'd:\'
    >>> os.path.dirname("d:\pic\baidu.html")
    'd:\pic'
    >>> os.path.basename("d:\pic\baidu.html")   #获取文件名
    'baidu.html'
    >>>
     
    >>> os.path.splitext("d:\pic\baidu.html")   #切割文件名后缀和路径
    ('d:\pic\baidu', '.html')
    >>> os.path.splitext("d:\pic\baidu.html")[0]   
    'd:\pic\baidu'
    >>> os.path.splitext("d:\pic\baidu.html")[1]
    '.html'
    >>>
     
    >>> os.listdir()
    ['baidu.html']
    >>> os.rename("baidu.html","bd.html")  #改名
    >>> os.listdir()
    ['bd.html']
    >>> os.path.getsize("d:\pic\bd.html")   #获取文件大小(字节数)
    15625
     
    >>> os.getcwd()
    'd:\pic'
    >>> os.rmdir("test")
    >>> os.mkdir("d:\pic\test")
    >>> os.listdir()
    ['bd.html', 'test']
    >>> os.rmdir("test")  #删除目录
    >>> os.listdir()
    ['bd.html']
    >>>
     
     
    #join拼接路径
    >>> os.path.join("d:\pic","a.txt")
    'd:\pic\a.txt'
    >>> "d:\pic\"+"a.txt"
    'd:\pic\a.txt'
    >>> "d:\pic"+os.sep+"a.txt"
    'd:\pic\a.txt'
    >>>
  • 相关阅读:
    bitcoin PoW原理及区块创建过程
    Hyperledger Fabric(v1.1.0)编译时遇到的问题
    Hyperledger Fabic中的Transaction流程
    mint linux 18.3 遇到“已安装的 post-installation 脚本 返回了错误号 127 ”问题的解决
    redis--解析字符串
    golang 统计uint64 数字二进制存储中1的数量
    c++ std 最小堆的使用 (用于实现top100之类的功能)
    Linux 信号signal处理函数
    Linux 信号signal处理机制
    LinuxMint 下 B站 番 blv 缓存 转 mp4
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11622633.html
Copyright © 2011-2022 走看看