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

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

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

用于kaggle解决调用其它程序中自定义函数_第1张图片

 经过查找资料后发现,只需要将函数所在程序文件放到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文件整个复制下来,找了一圈发现没有现成代码,只好自己动手(鄙人小白自己动手写代码太费劲)

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

用于kaggle解决调用其它程序中自定义函数_第2张图片用于kaggle解决调用其它程序中自定义函数_第3张图片

下面是代码段

# 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点左右(起码我的是这样)

你可能感兴趣的:(python)