文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、问题阐述:
当保存文件时,因路径不存在而报错
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')