import os
# 返回.py文件的目录 ==> .py文件所在的目录
# __file__ 当前文件
path1 = os.path.dirname(__file__)
print(path1)
# 返回的是.py文件的绝对路径
path2 = os.path.abspath(__file__)
print(path2)
# 组合使用
path3 = os.path.dirname(os.path.abspath(__file__))
print(path3)
# 拼接路径
path4 = os.path.join(os.path.dirname(os.path.abspath(__file__)), "test.py")
print(path4)
运行结果如下:
PS E:\python_study> & C:/Anaconda3/envs/pytroch-gpu/python.exe e:/python_study/test.py
e:/python_study
e:\python_study\test.py
e:\python_study
e:\python_study\test.py
当前文件夹路径情况如下图所示。
# os.walk(path)返回(路径,子路径,文件)的元组
import os
def walkFile(file):
for root, dirs, files in os.walk(file):
# root 表示当前正在访问的文件夹路径(当前路径)
# dirs 表示该文件夹下的子目录名list
# files 表示该文件夹下的文件list
print("root", root)
print("dirs",dirs)
print("files",files)
walkFile(r'E:/python_study')
运行结果如下:
PS E:\python_study> & C:/Anaconda3/envs/pytroch-gpu/python.exe e:/python_study/test.py
root E:/python_study
dirs ['1', '2']
files ['test.py']
root E:/python_study\1
dirs ['1_1']
files []
root E:/python_study\1\1_1
dirs []
files []
root E:/python_study\2
dirs ['2_1']
files []
root E:/python_study\2\2_1
dirs []
files []
当前路径下文件情况。
# os.listdir() 方法用于返回指定的文件夹下
# 包含的 文件 或 文件夹 的名字的列表。
import os
res1 = os.listdir(r"E:/python_study")
print("res1:",res1)
res2 = os.listdir(r"E:/python_study/1")
print("res2",res2)
运行结果如下:
res1: ['1', '2', 'test.py']
res2 ['1.txt', '1_1', '2.txt', '3.txt', '4.txt', '5.txt']
补充总结:python中os.path常用模块
- os.path.sep:路径分隔符 linux下就用这个了’/’
- os.path.altsep: 根目录
- os.path.curdir:当前目录
- os.path.pardir:父目录
- os.path.abspath(path):绝对路径
- os.path.join(): 常用来链接路径
- os.path.split(path): 把path分为目录和文件两个部分,以列表返回
- os.path.basename(path_img): 返回最后的文件名
- os.getcwd() : 获取当前目录的绝对路径
综合案列:文件的拷贝和更名
import os
import shutil
path1 = r"G:\热成像数据集\合成后的视频文件\image - 副本"
path2 = r"G:\热成像数据集\合成后的视频文件\image-finall"
# 1、获取该目录下的所有文件
# filelist = os.listdir(path1)
# img_count = len(filelist)
# 从一个文件夹将文件复制到另一个文件夹
# for i in range(img_count):
# target_path = os.path.join(path2, filelist[i])
# src_path = os.path.join(path1, filelist[i])
# shutil.copy(src_path, target_path)
#
# print("文件复制完毕!")
# 2、文件重命名
# 获取该目录下的所有文件
# filelist = os.listdir(path2)
# img_count = len(filelist)
# n = 0
# for i in range(img_count):
# # 设置旧文件名(就是路径+文件名)
# oldname = path2 + os.sep + filelist[i] # os.sep 添加系统分隔符
# # 设置新文件名
# newname = path2 + os.sep +str(n + 1) + ".jpg"
# os.rename(oldname, newname)
# print(oldname, '======>', newname)
# n = n + 1
#
# print("更名完毕!")
# 3、文件分批拷贝
# (1) 创建文件夹
def makedir(new_dir):
if not os.path.exists(new_dir):
os.makedirs(new_dir)
# (2)分批拷贝文件
filelist = os.listdir(path2)
img_count = len(filelist)
n = 1
for i in range(img_count):
temp = str(i+1) + ".jpg"
scr_path = os.path.join(path2, temp)
target_path = os.path.join(path2, '..', "分批", str(n))
makedir(target_path)
shutil.copy(scr_path, target_path)
if i == 0:
continue
elif i % 800 == 0:
n = n + 1
文件夹与否检测 和 文件夹创建。
# 不存在这个路径,创建文件夹
def my_mkdir(my_dir):
if not os.path.isdir(my_dir):
os.makedirs(my_dir)
def makedir(new_dir):
if not os.path.exists(new_dir):
os.makedirs(new_dir)
详见:https://blog.csdn.net/MasterCayman/article/details/109443144