用于kaggle解决调用其它程序中自定义函数

在kaggle中,input文件夹只能进行读取,无法写入。output中可以进行读取和写入。

但上传本地代码包后,发现程序中无法调用其它程序中的自定义函数,如下图所示:

 经过查找资料后发现,只需要将函数所在程序文件放到output中即可。下面程序来源Kaggle 导入自定义函数库_矩阵科学的博客-CSDN博客_kaggle导入项目(亲测可用)

# import module we'll need to import our custom module
from shutil import copyfile
 
# copy our file into the working directory (make sure it has .py suffix)
copyfile(src = "../input/create-function/my_functions.py", dst = "../working/my_functions.py")
 
# import all our functions
from my_functions import *
 
# we can now use this function!
num=times_two_plus_three(4)
print(num)
# and this one too!
print_cat()

但问题来了,这个train.py调用了nets和utils两个文件夹中程序的函数,程序数量很多,而且按照上面的方法不能复制文件夹,这就导致主程序中调用函数时需要修改地址,这无疑是很麻烦的方法(白嫖GPU实在太难了)

所以想到了直接把input文件整个复制下来,找了一圈发现没有现成代码,只好自己动手(鄙人小白自己动手写代码太费劲)

经过调试后终于成功!!上图片!

下面是代码段

# Ningmou
import os.path
import shutil

rootdir = r'E:\GitHubcode\deeplabv3-plus-pytorch-main\lala'  # 要复制的目标文件夹
for filename in os.listdir(rootdir):  # 遍历每一个文件
    source_path = os.path.join(rootdir, filename)
    target_path = os.path.join(r'E:\GitHubcode\deeplabv3-plus-p'
                               r'ytorch-main\a' + '\\' + filename)#存放地址

#复制文件夹
    if os.path.isdir(source_path):
        if not os.path.exists(target_path):
            # 如果目标路径不存在原文件夹的话就创建
            os.makedirs(target_path)

        if os.path.exists(source_path):
            # 如果目标路径存在原文件夹的话就先删除
            shutil.rmtree(target_path)

        shutil.copytree(source_path, target_path) #复制整个目录树
#---------------------------------------------#
#复制非文件夹
    elif os.path.isfile(source_path):
        shutil.copyfile(source_path, target_path)

print('copy dir finished!')

顺便放上删除output中文件夹的方法,

 # kaggle删除output中的文件
 import shutil
 shutil.rmtree(r"./nets") #目标文件夹

顺便一提,kaggle的GPU的更新时间为每周六8点左右(起码我的是这样)

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值