os.path 模块主要用于用于处理文件路径和文件名

1. os.path.abspath -返回指定路径的绝对路径。例如:os.path.abspath('test.txt') 返回 /home/user/test.txt

1.1 os.path.abspath(__file__) -返回当前文件的绝对路径

#test_demo.py

import os

print("Print path of current file", os.path.abspath(__file__)) # /Users/xx/Myselfpython/tests/test_demo.py

 

2.os.path.dirname() -返回文件路径(上一级目录)(返回指定路径的目录名。例如:os.path.dirname('/home/user/test.txt') 返回 /home/user。)

# test_demo.py

import os

print("Dirname is:", os.path.dirname(os.path.abspath(__file__))) #/Users/xx/Myselfpython/tests

 

3.os.path.expanduser() - 把path 中包含的 ~ 和 ~user 转换成用户目录

import os
print(os.path.expanduser("~"))
/Users/san.zhang
print(os.path.expanduser("../"))
../
print(os.path.abspath(os.path.expanduser("../")))
/Users/san.zhang/myself_project

 

4. os.path.join(): 将多个路径组合成一个完整的路径。例如:os.path.join('/usr', 'local', 'bin') 返回 /usr/local/bin

--data

--tests

---test_demo

----test_demo.py

如上获取当前路径的上2层的data目录

#test_demo.py

import os


print("上2层目录下的data路径:", os.path.abspath(os.path.join(os.path.abspath(__file__), "../../data"))) # /Users/xx/Myselfpython/data

注意:join 拼接获取绝对路径时,前母需要加上os.path.abspath

 

5.os.path.basename(): 返回指定路径的文件名或目录名。例如:os.path.basename('/home/user/test.txt') 返回 test.txt

6.os.path.exists(): 判断指定路径是否存在。例如:os.path.exists('/home/user/test.txt') 返回 True 或 False

7.os.path.isfile(): 判断指定路径是否为文件。例如:os.path.isfile('/home/user/test.txt') 返回 True 或 False

8.os.path.isdir(): 判断指定路径是否为目录。例如:os.path.isdir('/home/user') 返回 True 或 False

9.os.path.splitext(): 分离文件名和扩展名。例如:os.path.splitext('/home/user/test.txt') 返回 ('/home/user/test', '.txt')

10.os.path.getsize(): 获取文件大小。例如:os.path.getsize('/home/user/test.txt') 返回文件大小,单位为字节。

11.os.path.getmtime(): 获取文件的修改时间。例如:os.path.getmtime('/home/user/test.txt') 返回文件的修改时间戳。

 

12. os.listdir() 方法用于返回指定目录下的所有文件和子目录的名称列表。os.listdir() 方法返回一个列表,包含了当前目录下的所有文件和子目录的名称

例如,要列出当前目录下的所有文件和子目录,可以使用以下代码

# test_demo.py

import os
print(os.listdir(".")) # list出当前路径下的文件名, 返回类型是list, ['conftest.py', 'test_demo.py', 'search_elastic']

如果要列出指定目录下的所有文件和子目录,只需要将目录路径作为 os.listdir() 方法的参数即可

import os

dir_list = os.listdir('/home/user')
print(dir_list)

需要注意的是,os.listdir() 方法只会列出目录下的直接子目录和文件,不会递归列出子目录中的文件和子目录。如果需要递归列出子目录中的文件和子目录,可以使用递归函数来实现。