os.path.dirname()、os.path.abspath()、os.path.join()、 os.walk()以及os.listdir()的使用

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

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值