Python-os模块
os 模块
-
读写文件: 使用内置函数
open()
-
路径相关的操作: 使用
os
的子模块os.path
-
逐行读取多个文件: 使用
fileinput
模块 -
创建临时文件或路径: 使用
tempfile
模块 -
更高级的文件和路径操作: 使用
shutil
模块
os.name
返回导入的操作系统相关模块的名称:
posix
, Portable Operating System Interface of UNIX (可移植操作系统接口), Linux 和 Mac OS 均会返回该值;nt
, Microsoft Windows NT.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()
: 返回一个二元组, 分别是字符串的dirname
和basename
.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