判断文件夹是否为空并且删除文件
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 24 10:14:29 2021
@author: xiaokangyu
"""
import os
import shutil
f="/Users/xiaokangyu/Desktop/11/"
## 只删除文件,不删除自文件夹
def del_file(path):
ls = os.listdir(path)
for i in ls:
c_path = os.path.join(path, i)
if os.path.isdir(c_path):
del_file(c_path)
else:
os.remove(c_path)
## 判断文件夹是否为空
if not os.listdir(f):
print("文件夹为空")
else:
print("文件夹不空")
del_file(f)
可以有一种更简单的实现方式
###############################################################
save_dir="./result/"+dataset
sc.settings.figdir=save_dir
print(adata) #basic information
###############################deleting files################################
#filelist = [ f for f in os.listdir(os.path.join(os.getcwd(),save_dir)) if f.endswith(".png") ]
filelist = [ f for f in os.listdir(os.path.join(os.getcwd(),save_dir))]
for f in filelist:
os.remove(os.path.join(os.getcwd(),save_dir, f))
``
这样实现起来更简单方便
# 列举文件夹中的所有文件,并过滤掉不符合条件的文件
```python
pathlist=os.listdir("/data/wangdongxue/yxk/dataset/pancreas/")
print(pathlist)
pathlist= filter(lambda x: x[-4:]=="h5ad", pathlist)
list(pathlist)
结果如下
判断文件夹是否为空,如果空,则创建文件夹
method_list=["scDML"]
dataset_list=["bct"]
parent_path="/DATA2/zhangjingxiao/yxk/scDML_project_share/"
for dataset in dataset_list:
for method in method_list:
if(os.path.exists(parent_path+dataset)):
print(dataset+" folder exists")
else:
os.mkdir(parent_path+dataset)
if(os.path.exists(parent_path+dataset+"/"+method)):
print(dataset+"/"+method+" folder exists")
else:
os.mkdir(parent_path+dataset+"/"+method)
python复制文件到指定文件夹
for dataset in dataset_list:
print("dataset=",dataset)
for method in method_list:
print("method=",method)
shutil.copyfile(read_parent_path+"evaluation/"+dataset+"/"+dataset+"_evaluation.csv",write_parent_path+dataset+"/"+dataset+"_evaluation.csv")
python 移动文件到指定文件夹
import shutil
shutil.move("07_20.docx","./") # 移动文件
shutil.move("../html转png/","./") # 移动文件夹
使用案例
import shutil
import numpy as np
reso_list=np.r_[np.linspace(2.0,4.0,11),np.linspace(5.0,10.0,6)]
print(reso_list)
for reso in reso_list:
sfolder="./reso_"+str(np.round(reso,1))
print(sfolder)
shutil.move(sfolder,"./louvain/")
判断某个文件是否存在
os.path.exists()
使用案例
import scanpy as sc
import matplotlib.pyplot as plt
from utils import prepro
# prepro return adata
all_dataset = ["Quake_Smart-seq2_Limb_Muscle"]
for dataname in all_dataset:
print("*"* 100)
print("*"*50 + dataname +"*"*50)
if(os.path.exists(base_dir+ dataname+"/"+ dataname+"_raw.h5ad")):
adata = sc.read(base_dir+ dataname+"/"+ dataname+"_raw.h5ad")
else:
adata = prepro(dataname)
adata.write(base_dir+ dataname+"/"+ dataname+"_raw.h5ad")
print(adata)
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata, n_top_genes=2000, subset = True)#seurat_v3 neeed count based
sc.pp.scale(adata) #
sc.tl.pca(adata)
sc.pp.neighbors(adata)
sc.tl.umap(adata)
sc.pl.umap(adata,color=["celltype"],show=False)
plt.savefig(base_dir+ dataname+"/"+ dataname+"_raw.png")
print("*"* 100)
print("*"* 100)
# adata.obs["cell_label"] number label
# adata.obs["celltype"] string label