zoukankan      html  css  js  c++  java
  • 第十九章 Python os模块,pathlib 判断文件是目录还是文件

    OS模块

    • os.path.abspath() :返回path规范化的绝对路径
    import sys
    import os
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)os.getcwd()
    • os.getcwd():直接获取当前工作文件的目录,即当前python脚本工作的目录路径
    print(os.getcwd())
    # 结果
    F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22
    • os.chdir("") : 改变当前脚本工作目录;相当于shell下cd

    特别要注意:

      win:路径全部都是反斜杠的,如:F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22 est1

      linux:路径全部都是斜杠的,如:F:/workspace/OldBoy/源码课件与源码/python全栈3期-课件与源码/day22源码/day22课堂代码/day22/test1

      Python中,所有路径都要采用Linux系统下的路径格式,用斜杠

    os.chdir("test1")  # 将当前脚本的工作目录变更为test1
    print(os.getcwd()) 
    #结果,当前脚本的工作目录就变更到test1下面了
    F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22	est1

    os.chdir("..")  # 返回上一级目录
    print(os.getcwd())

    # 结果
    # F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码

    • os.curdir():返回当前目录:('.')
    print(os.curdir)
    
    # 结果
    .
    • os.pardir() :获取当前目录的父目录字符串名:(’..‘)
    print(os.pardir)
    # 结果
    ..
    • os.makedirs('dirname1/dirname2'):可生成多层递归目录
    os.makedirs("dir1/dir2")

    •  os.removedirs("dirname1"):若目录为空,则删除,并递归到上一级目录,上一级目录如果也是空的,则删除,以此类推
    os.removedirs("dir1/dir2")
    
    # 会将上面创建的两个文件夹都删掉
    
    # 如果dir1下面创建任意一个文件,则只删除dir2
    •  os.mkdir("dirname"):生成一个目录;相当于shell中mkdir dirname
    os.mkdir("dir3")
    • os.rmdir("dirname"):删除单级空目录,若目录不为空则无法删除,报错;相当于shell下的rmdir dirname
    os.rmdir("dir3")
    • os.listdir():列出指定目录下的所有文件和子目录,包含隐藏文件,并以列表方式打印
    # 指定目录,就只会列出该目录下的文件和子目录
    print(os.listdir("dir1")) 
    # 结果
    # ['1.py', 'dir2']
    
    # 没指定目录,列出的是与当前脚本同级的目录和文件
    print(os.listdir())  
    • os.remove():删除一个文件
    # 必须指定要删除的文件的目录
    os.remove("dir1/1.py")
    • os.rename("oldname","newname"):重命名文件/目录
    # 把dir1重命名为 dir3
    os.rename("dir1","dir3")
    • os.stat("path/filename"):获取文件/目录信息。
    # 看文件
    print(os.stat("os_test.py"))
    # os.stat_result(st_mode=33206, st_ino=281474976734818, st_dev=1143308193, st_nlink=1, st_uid=0, st_gid=0, st_size=556, st_atime=1530249778, st_mtime=1481602274, st_ctime=1530249778)
    
    # 看目录
    print(os.stat("test1/test2"))
    # os.stat_result(st_mode=16895, st_ino=562949953445493, st_dev=1143308193, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1530450149, st_mtime=1530450149, st_ctime=1530450149)
    
    # 常用的需要看的
    st_size=0            # 看文件的大小
    st_atime=1530450149  # 用户最近一次的访问时间   
    st_mtime=1530450149  # 用户最近一次的修改时间   这是经常用的
    st_ctime=1530450149  # 看文件的创建时间

    •  os.sep:输出操作系统特定的路径分隔符,win下为"\", linux 下为 "/"
    print(os.sep)   # 
    • os.linesep:输出当前平台使用的行终止符,win下为 " ",Linux下为" "
    print(os.linesep)
    • os.pathsep:输出用于分割文件路径的字符串 ,win下为;  ,Linux 下为 :
    print(os.pathsep)   # ;
    • os.name:输出字符串指示当前使用平台。 win下为 "nt" ; Linux下为"posix"
    print(os.name)    # nt
    • os.system("bash command") : 运行shell命令,直接显示
    print(os.system("dir"))
    • os.environ :获取系统环境变量
    print(os.environ)
    # 结果
    environ({'ALLUSERSPROFILE': 'C:\ProgramData', 'APPDATA': 'C:\Users\mamingchen\AppData\Roaming', 'ASL.LOG': 'Destination=file', 'CLASSPATH': '".;C:\Program Files\Java\jdk1.8.0_171\lib;C:\Program Files\Java\jdk1.8.0_171\lib\tools.jar";', 'COMMONPROGRAMFILES': 'C:\Program Files (x86)\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\Program Files (x86)\Common Files', 'COMMONPROGRAMW6432': 'C:\Program Files\Common Files', 'COMPUTERNAME': '5ZVF1G2-2', 'COMSPEC': 'C:\Windows\system32\cmd.exe', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\Users\mamingchen', 'JAVA_HOME': 'C:\Program Files\Java\jdk1.8.0_171', 'JENKINS_HOME': 'C:\Users\mamingchen', 'LOCALAPPDATA': 'C:\Users\mamingchen\AppData\Local', 'LOGONSERVER': '\\DC02-SHQCL', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\Users\mamingchen\OneDrive', 'OS': 'Windows_NT', 'PATH': 'C:\ProgramData\Anaconda3;C:\ProgramData\Anaconda3\Library\mingw-w64\bin;C:\ProgramData\Anaconda3\Library\usr\bin;C:\ProgramData\Anaconda3\Library\bin;C:\ProgramData\Anaconda3\Scripts;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\nodejs\;E:\Program Files\Git\cmd;C:\Python\Python36-32;C:\Python\Python36-32\Scripts;C:\Python\Python36-32\Scripts;C:\Python\Python36-32\;"C:\Users\mamingchen\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Java\jre1.8.0_151\bin;C:\Program Files (x86)\Java\jre1.8.0_151\jre\bin";E:\Users\mamingchen\AppData\Local\Programs\Fiddler;"C:\Program Files\Java\jdk1.8.0_171\bin;C:\Program Files\Java\jdk1.8.0_171\jre\bin";C:\Users\mamingchen\AppData\Roaming\npm', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'x86', 'PROCESSOR_ARCHITEW6432': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 9, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8e09', 'PROGRAMDATA': 'C:\ProgramData', 'PROGRAMFILES': 'C:\Program Files (x86)', 'PROGRAMFILES(X86)': 'C:\Program Files (x86)', 'PROGRAMW6432': 'C:\Program Files', 'PSMODULEPATH': 'C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules', 'PUBLIC': 'C:\Users\Public', 'PYCHARM_HOSTED': '1', 'PYCHARM_MATPLOTLIB_PORT': '53877', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'C:\Program Files\JetBrains\PyCharm 2018.1.2\helpers\pycharm_matplotlib_backend;F:\workspace\OldBoy', 'PYTHONUNBUFFERED': '1', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\Windows', 'TEMP': 'C:\Users\MAMING~1\AppData\Local\Temp', 'TMP': 'C:\Users\MAMING~1\AppData\Local\Temp', 'USERDNSDOMAIN': 'YIXIN.DK', 'USERDOMAIN': 'YIXIN', 'USERDOMAIN_ROAMINGPROFILE': 'YIXIN', 'USERNAME': 'mamingchen', 'USERPROFILE': 'C:\Users\mamingchen', 'VBOX_INSTALL_PATH': 'E:\Program Files\Oracle\VirtualBox\', 'WINDIR': 'C:\Windows'})
    • os.path.split():将path分隔成目录和文件名二元组返回
    print(os.path.split("F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22os_test.py"))
    
    # 结果
    ('F:\workspace\OldBoy\源码\课件与源码\python全栈3期-课件与源码\day22源码\day22课堂代码\day22', 'os_test.py')
    
    # 相当于拿的是上面的第一个元素
    print(os.path.dirname("F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22os_test.py"))
    # F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22
    
    
    # 相当于拿的是上面的第二个元素
    print(os.path.basename("F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22os_test.py"))
    # os_test.py
    • os.path.dirname():返回path的目录。其实就是os.path.split(path)的第一个元素  ----常用
    • os.path.basename():返回path的目录。其实就是os.path.split(path)的第二个元素 ----常用
    • os.path.exists(path):如果path存在,返回True;如果path不存在,返回False
    • os.path.isabs():如果path是绝对路径,返回True
    • os.path.isfile():如果path是要给存在的文件,返回True。否则返回False
    • os.path.isdir():如果path是一个存在的目录,则返回True。否则返回False
    • os.path.join(path1[,path2[,path3[....]]]):将多个路径组合后返回,第一个绝对路径之前的参数将被忽略-----常用,实现路径拼接
    a = "F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码"
    b = r"day22	est1	est2"
    
    # 要把上面两个路径拼接起来
    c = os.path.join(a, b)
    
    print(c)
    F:workspaceOldBoy源码课件与源码python全栈3期-课件与源码day22源码day22课堂代码day22	est1	est2
    • os.path.getatime():返回path所指向的文件或者目录的最后存取时间
    • os.path.getmtime():返回path所指向的文件或者目录的最后修改时间

    pathlib 

    # 下面的代码用来判断一个文件是目录还是文件
    from pathlib import Path
    # 判断文件是目录
    myfile_dir = Path("F:/workspace/TestFanClassCodes/lesson05_生成器迭代器队列栈_20180728")
    print(myfile_dir.is_dir())
    # 判断文件是个文件
    myfile_file = Path("F:workspaceTestFanClassCodeslesson05_生成器迭代器队列栈_20180728代码generator.py")
    print(myfile_file.is_file())
    
    
  • 相关阅读:
    疫情环境下的网络学习笔记 python 5.8 数据库入门终章
    疫情环境下的网络学习笔记 python 5.7 navicat数据库,例题,sql注入
    疫情环境下的网络学习笔记 python 5.6 暂时看看
    疫情环境下的网络学习笔记 python 5.5 MYSql 表关系,外键
    疫情环境下的网络学习笔记 python 5.4 数据库基础
    疫情环境下的网络学习笔记 python 4.30 初识数据库
    疫情环境下的网络学习笔记 python 4.29 网络小项目
    XJOI 夏令营501-511测试11 游戏
    XJOI 夏令营501-511测试11 统计方案
    CF1197D Yet Another Subarray Problem
  • 原文地址:https://www.cnblogs.com/victorm/p/9251122.html
Copyright © 2011-2022 走看看