os.path的用法


提示:以下是本篇文章正文内容,下面案例可供参考

一、问题阐述:

当保存文件时,因路径不存在而报错

path_save='T3N2W2'
result_whole_pd.to_csv('data/data_merge/{}/clf_negative/prediction_result.csv'.format(path_save))

原因:pandas 的 to_csv 方法不会自动创建文件夹。如果文件夹不存在,代码会抛出一个错误。因此,在使用 to_csv 方法之前,我们需要确保目标文件夹已经存在。可以使用 Python 的 os 模块来检查并创建所需的文件夹。

二、解决方法:

import os
import pandas as pd

# 假设 result_whole_pd 是 DataFrame
path_save = 'T3N2W2'  # 替换为实际路径

# 构建目标文件夹路径
directory = 'data/data_merge/{}/clf_negative/prediction_result.csv'.format(path_save)

# 如果文件夹不存在,则创建它
if not os.path.exists(os.path.dirname(directory)):
        os.makedirs(os.path.dirname(directory))

# 将 DataFrame 保存为 CSV 文件
result_whole_pd.to_csv(os.path.join(directory, 'prediction_result.csv'))

三、拓展

3.1 os.makedirs与os.mkdir的区别

modelf='DREAMwalk-main/demo/clf_cutoff_negative'

os.mkdir()创建路径中的最后一级目录,即:只创建clf_cutoff_negative目录,而如果之前的目录不存在并且也需要创建的话,就会报错。os.makedirs()创建多层目录,即:DREAMwalk-main, demo, clf_cutoff_negative,如果都不存在的话,会自动创建,但是如果clf_cutoff_negative也就是最后一级目录已存在的话就会抛出FileExistsError异常。

3.2 os.path.dirname用法

功能:去掉文件名,返回目录

import os
modelf='DREAMwalk-main/demo/clf_cutoff_negative/ccc.csv'
os.path.dirname(modelf)

输出:DREAMwalk-main/demo/clf_cutoff_negative 。

3.3 os.path.join()用法

描述:把目录和文件名合成一个路径,1.如果各组件名首字母不包含’/’,则函数会自动加上,2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃,3.如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾。

path = os.path.join('C:/Users','zuxuedata/Desktop/','组学数据分析')
# 'C:/Users/zuxuedata/Desktop/组学数据分析'
Path = os.path.join('home_list','yin/tcm_tissue','/home/yin/tcm_tissue_net/counts_of herbpairs.csv') 
# '/home/yin/tcm_tissue_net/counts_of herbpairs.csv'
PATH = os.path.join('home','yin/tcm_tissue_net','')
# 'home/yin/tcm_tissue_net/'

3.4 os.listdir()用法:

描述:列出目录下的所有文件和文件夹
语法:os.listdir(path)

3.5 os.path.abspath() 用法:

描述:返回文件的绝对路径
语法:os.path.abspath(path)

3.6 os.path.exists()用法:

描述:如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。
语法:os.path.exists(path)

os.path.exists('C:/Users/wenzhi/Desktop/差异基因.csv/')
True

3.7 os.path.split()用法:

描述:把路径分割成 dirname 和 basename,返回一个元组,basename就是文件名

path = 'home/yin/tcm_tissue_net/counts_of herbpairs.csv'
os.path.split(path) # ('home/yin/tcm_tissue_net', 'counts_of herbpairs.csv')

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值