比如说我有一个文件C:/Users/Lenovo/Desktop/test.py:
import os
print(__file__)
# 输出:C:/Users/Lenovo/Desktop/test.py
print(os.path.basename(__file__))
# 输出:test.py
import os
from pathlib import Path
file_name, extension = os.path.splitext(os.path.basename(__file__))
print(file_name, extension, sep=' ')
# 输出:test .py
print(Path(__file__).stem)
# 输出:test
print(Path(__file__).suffix)
# 输出:.py
# 如果你想获得所有的后缀名,例如.tar.gz,那么使用.suffixes将会返回一个列表。例如:
print(Path('somedir/file.tar.gz').suffixs)
可以看到,os.path.splitext()方法可以返回一个元组,第一个参数是文件名,第二个参数是后缀名(带一个点);如果仅仅是想获得文件名(不含后缀),可以使用后一种方法。
事实上,在Python 3.4+以后,我们推荐使用pathlib这种方法来获得文件名(不含后缀)。
主要有两种方法:
这两种方法的区别在于:
os.getcwd()获取的是当前最外层调用的脚本路径,而os.path.dirname(os.path.realpath(__file__))获取的是file所在脚本的路径。
这篇博文讲得很仔细,可以学习一下。
# os.path.split(): 返回文件的路径和文件名
dirname, filename = os.path.split('somedir/test.py')
print(dirname)
print(filename)
# 输出:
# somedir
# test.py