Python-os模块

os 模块

  • 读写文件: 使用内置函数open()

  • 路径相关的操作: 使用os的子模块os.path

  • 逐行读取多个文件: 使用fileinput模块

  • 创建临时文件或路径: 使用tempfile模块

  • 更高级的文件和路径操作: 使用shutil模块

os.name

返回导入的操作系统相关模块的名称:

  1. posix, Portable Operating System Interface of UNIX (可移植操作系统接口), Linux 和 Mac OS 均会返回该值;
  2. nt, Microsoft Windows NT.
  3. java, Java 虚拟机环境下的返回值.

os.environ

返回环境相关的信息, 主要是各类环境变量. 返回值是一个映射(类似字典类型), 具体的值为第一次导入os模块时的快照; 其中的各个键值对, 键是环境变量名, 值则是环境变量对应的值.

在第一次导入os模块之后, 除非直接修改os.environ的值, 否则该属性的值不再发生变化.

print(os.environ["HOMEPATH"])
# \Users\huluhulu

os.walk()

walk(top, topdown=True, onerror=None, followlinks=False): 目录树生成器.

在以top为根节点的目录树中游走,对树中的每个目录生成一个由(dirpath, dirnames, filenames)三项组成的元组。

dirpath是一个指示这个目录路径的字符串,dirnames是一个dirpath下子目录名(除去“.”“..”)组成的列表,filenames则是由dirpath下所有非目录的文件名组成的列表。

这些名称并不包含所在路径本身,要获取dirpath下某个文件或路径从top目录开始的完整路径,需要使用os.path.join(dirpath, name)

最终返回的结果是一个迭代器,我们可以使用for语句逐个取得迭代器的每一项:

for i in os.walk('.'):
    print(i)
# ('.', ['filegroup'], ['file1.txt'])
# ('.\\filegroup', [], ['file2.txt'])

os.listdir()

os.listdir(path='.'): 返回一个列表, 内容均为字符串, 分别是目录名和文件名. path用以指定目录的路径.

for i in os.listdir():
    if os.path.isfile(i):  # 判断是否为文件名
        print(i)           # 打印当前目录下所有文件名

os.mkdir()

  • os.mkdir(): 新建一个目录

  • os.makedirs(): 新建多级目录, 会分别新建指定目录经过的中间目录

os.mkdir('test')
os.makedirs("test/layer1/layer2")

os.remove()

  • os.remove(): 删除指定文件
  • os.rmdir(): 删除指定空目录
  • os.removedirs(): 从最下级目录开始,逐级删除空目录

os.rename()

  • os.rename(src, dst): 将文件或路径重命名为dst.

    如果指定的目标路径在其他目录下, 该函数还可实现文件或路径的剪切和粘贴, 并且重命名.

  • os.renames(): 递归版本,能够创建缺失的中间路径.

os.getcwd()

Get the current working directory, 获取当前工作目录

os.chdir()

Change the directory, 切换当前工作路径为指定路径.

参数既可以是文本或字节型字符串, 也可以是一个文件描述符, 还可以是一个广义的类路径(path-like)对象.

os.path 模块

os.path.join()

将传入的几个字符串用系统的分隔符连接起来, 组合成一个新的字符串.

第一个参数作为父目录, 之后每一个参数作为下一级目录, 从而组合成一个新的符合逻辑的路径.

但如果传入路径中存在一个"绝对路径"格式的字符串, 且这个字符串不是函数的第一个参数, 那么在这个参数之前的所有参数都会被丢弃, 余下的参数再进行组合.

print(os.path.join("test", "1", "F:/", "1", "C:/", "Users"))
# C:/Users

os.path.abspath()

将传入路径规范化, 返回一个相应的绝对路径格式的字符串.

当传入路径符合"绝对路径"的格式时, 该函数仅仅将路径分隔符替换为适应当前系统的字符, 不做其他任何操作, 并将结果返回.

当指定的路径不符合上述格式时, 该函数会自动获取当前工作路径, 并使用os.path.join()函数将其与传入的参数组合成为一个新的路径字符串.

print(os.path.abspath("C:/Users/huluhulu"))
print(os.path.abspath("test"))
# C:\Users\huluhulu
# F:\python\test

os.path.basename()

返回传入目录的"基名", 即传入目录最后一个分隔符之后的子字符串.

os.path.basename("F:/python/test.txt")   # 'test.txt'
os.path.basename("F:/python/")  # ''

os.path.dirname()

返回最后一个分隔符前的整个字符串.

os.path.dirname("F:/python/test.txt")   # 'F:/python'

os.path.split()

  • os.path.split(): 返回一个二元组, 分别是字符串的dirnamebasename.
  • os.path.splitext(): 以字符串中最后一个 '.' 为分隔符, 返回一个二元组.
print(os.path.split("F:/python/test.txt"))
# ('F:/python', 'test.txt')
print(os.path.splitext("F:/python/test.txt"))
# ('F:/python/test', '.txt')

os.path.exists()

判断目录所指向的位置是否存在.

print(os.path.exists('./test.txt'))
# True

os.path.isabs()

判断传入路径的格式是否符合绝对路径.

print(os.path.isabs("F:/python/NoDir"))
# Ture

os.path.isfile()

  • os.path.isfile()
  • os.path.isdir()

分别判断传入路径是否是文件或路径. 此处会核验路径的有效性, 如果是无效路径将会返回False.

print(os.path.isdir("F:/python/NoDir"))  # False
print(os.path.isdir("F:/python"))        # True
print(os.path.isfile('./test.txt'))      # True
posted @ 2022-09-13 15:45  Khru  阅读(19)  评论(0编辑  收藏  举报