Python day 10 - OS 模块中关于文件/目录常用的函数

OS 模块中关于文件/目录常用的函数

我们所知道常用的操作系统就有:Windows,Mac OS,Linu,Unix等,这些操作系统底层对于文件系统的访问工作原理是不一样的,因此你可能就要针对不同的系统来考虑使用哪些文件系统模块……,这样的做法是非常不友好且麻烦的,因为这样就意味着当你的程序运行环境一改变,你就要相应的去修改大量的代码来应对。
有了OS(Operation System)模块,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。

  1. os.getcwd() 用于返回当前工作目录。
  2. os.chdir(path) 用于改变当前工作目录到指定的路径。
import os
path = 'C:\\'
print("当前工作目录 : %s" % os.getcwd())
# 当前工作目录 : C:\Users\Administrator\PycharmProjects\untitled1
os.chdir(path)
print("目录修改成功 : %s" % os.getcwd())
# 目录修改成功 : C:\
  1. listdir (path=’.’) 返回 path 指定的文件夹包含的文件或文件夹的名字的列表。
import os
dirs = os.listdir()
for item in dirs:
    print(item)
  1. os.mkdir(path) 创建单层目录,如果该目录已存在抛出异常。
import os

if os.path.isdir(r'.\b') is False:
    os.mkdir(r'.\B')
    os.mkdir(r'.\B\A')
    
os.mkdir(r'.\C\A') # FileNotFoundError

没有看懂上面的

  1. os.makedirs(path) 用于递归创建多层目录,如果该目录已存在抛出异常。
import os
os.makedirs(r'.\E\A')
  1. os.remove(path) 用于删除指定路径的文件。如果指定的路径是一个目录,将抛出 OSError 。
    【例】首先创建 .\E\A\text.txt 文件,然后进行删除。
import os
print("目录为: %s" % os.listdir(r'.\E\A'))
os.remove(r'.\E\A\test.txt')
print("目录为: %s" % os.listdir(r'.\E\A'))
  1. os.rmdir(path) 用于删除单层目录。仅当这文件夹是空的才可以, 否则, 抛出 OSError 。
    【例】首先创建 .\E\A 目录,然后进行删除。
import os

print("目录为: %s" % os.listdir(r'.\E'))
os.rmdir(r'.\E\A')
print("目录为: %s" % os.listdir(r'.\E'))

字母前加r表示raw string,也叫原始字符串常量。

  1. os.removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常。
    【例】首先创建 .\E\A 目录,然后进行删除。
import os

print("目录为: %s" % os.listdir(os.getcwd()))
os.removedirs(r'.\E\A') # 先删除A 然后删除E
print("目录为: %s" % os.listdir(os.getcwd()))
  1. os.rename(src, dst) 方法用于命名文件或目录,从 src 到 dst ,如果 dst 是一个存在的目录, 将抛出OSError 。
    【例】把test.txt文件重命名为test2.txt。
import os

print("目录为: %s" % os.listdir(os.getcwd()))
os.rename("test.txt", "test2.txt")
print("重命名成功。")
print("目录为: %s" % os.listdir(os.getcwd()))
  1. os.system(command) 运行系统的shell命令(将字符串转化成命令)

【例】先自行创建一个a.py的文件,然后由shell命令打开。

import os
path = os.getcwd() + '\\a.py'
a = os.system(r'python %s' % path)
os.system('calc') # 打开计算器
  1. os.curdir 指代当前目录( . )
  2. os.pardir 指代上一级目录( … )
  3. os.sep 输出操作系统特定的路径分隔符(win下为 \ ,Linux下为 / )
  4. os.linesep 当前平台使用的行终止符(win下为 \r\n ,Linux下为 \n )
  5. os.name 指代当前使用的操作系统(包括:‘mac’,‘nt’)
import os
print(os.curdir) # .
print(os.pardir) # ..
print(os.sep) # \
print(os.linesep)
print(os.name) # nt
  1. os.path.basename(path) 去掉目录路径,单独返回文件名
  2. os.path.dirname(path) 去掉文件名,单独返回目录路径
  3. os.path.join(path1[, path2[, …]]) 将 path1 , path2 各部分组合成一个路径名
  4. os.path.split(path) 分割文件名与路径,返回 (f_path,f_name) 元组。如果完全使用目录,它会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在。
  5. os.path.splitext(path) 分离文件名与扩展名,返回 (f_path,f_name) 元组。
import os
# 返回文件名
print(os.path.basename(r'C:\test\lsgo.txt')) # lsgo.txt
# 返回目录路径
print(os.path.dirname(r'C:\test\lsgo.txt')) # C:\test
# 将目录和文件名合成一个路径
print(os.path.join('C:\\', 'test', 'lsgo.txt')) # C:\test\lsgo.txt
# 分割文件名与路径
print(os.path.split(r'C:\test\lsgo.txt')) # ('C:\\test', 'lsgo.txt')
# 分离文件名与扩展名
print(os.path.splitext(r'C:\test\lsgo.txt')) # ('C:\\test\\lsgo', '.txt')
  1. os.path.getsize(file) 返回指定文件大小,单位是字节。
  2. os.path.getatime(file) 返回指定文件最近的访问时间
  3. os.path.getctime(file) 返回指定文件的创建时间
  4. os.path.getmtime(file) 返回指定文件的最新的修改时间
  5. 浮点型秒数,可用time模块的 gmtime() 或 localtime() 函数换算
import os
import time
file = r'.\lsgo.txt'
print(os.path.getsize(file)) # 30
print(os.path.getatime(file)) # 1565593737.347196
print(os.path.getctime(file)) # 1565593737.347196
print(os.path.getmtime(file)) # 1565593797.9298275
print(time.gmtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=7, tm_min=8, tm_sec=57, tm_wday=0,
tm_yday=224, tm_isdst=0)
print(time.localtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=15, tm_min=8, tm_sec=57, tm_wday=0,
tm_yday=224, tm_isdst=0)
  1. os.path.exists(path) 判断指定路径(目录或文件)是否存在
  2. os.path.isabs(path) 判断指定路径是否为绝对路径
  3. os.path.isdir(path) 判断指定路径是否存在且是一个目录
  4. os.path.isfile(path) 判断指定路径是否存在且是一个文件
  5. os.path.islink(path) 判断指定路径是否存在且是一个符号链接
  6. os.path.ismount(path) 判断指定路径是否存在且是一个悬挂点
  7. os.path.samefile(path1,path2) 判断path1和path2两个路径是否指向同一个文件
import os
print(os.path.ismount('D:\\')) # True
print(os.path.ismount('D:\\Test')) # False

没细看

猜你喜欢

转载自blog.csdn.net/weixin_48760912/article/details/114744643