首页 > 解决方案 > ipynb 到 py,将所有带有 name* 的文件移动到文件夹

问题描述

您好我正在尝试将笔记本 py 转换为常规的 python 文件,它会创建新文件夹,并根据文件名将文件复制到这些文件夹中。我如何在py中做到这一点?谢谢!

 import os
 def setPath_getData():
    # Set up folders for data
    newpath = r'userdata' 
    if not os.path.exists(newpath):
        os.makedirs(newpath)
        os.makedirs(r'userdata/sleep')
        os.makedirs(r'userdata/distance')
        os.makedirs(r'userdata/steps')
        os.makedirs(r'userdata/lightly')
        os.makedirs(r'userdata/mod')
        os.makedirs(r'userdata/sedentary')
        os.makedirs(r'userdata/very')
        os.makedirs(r'userdata/heart-rate-zone')
        os.makedirs(r'userdata/heart-rate')
        
        # Get data from fitbit
        filenames = os.listdir("user-site-export")
        unique_filenames = set()
        for f in filenames:
            unique_filenames.add(f.split("-")[0])

        # Move files to seperate folders
        !cp user-site-export/sleep* userdata/sleep
        !cp user-site-export/distance* userdata/distance
        !cp user-site-export/steps* userdata/steps
        !cp user-site-export/lightly_active_minutes* userdata/lightly/
        !cp user-site-export/moderately_active_minutes* userdata/mod/
        !cp user-site-export/sedentary_minutes* userdata/sedentary/
        !cp user-site-export/very_active_minutes* userdata/very/
        !cp user-site-export/time_in_heart_rate_zones* userdata/heart-rate-zone/
        !cp user-site-export/heart_rate* userdata/heart-rate/

        !ls userdata/
        print("Data loaded successfully")
        

我现在尝试了

            # Get data from fitbit
        filenames = os.listdir("user-site-export")
        unique_filenames = set()
        for f in filenames:
            unique_filenames.add(f.split("-")[0])
        
        source = os.listdir('user-site-export/')
        dest = '/userdata/sleep/'
        
        for file in source:
            if file.startswith('sleep'):
                shutil.copy(file, dest)
            
            #ls userdata/
    print("Data loaded successfully")

setPath_getData()

但我仍然没有复制文件

标签: pythonjupyter-notebook

解决方案


您可以使用 shutil 库来复制文件。下面的片段可用于将源文件复制到目标路径。但是,请注意目标路径应该是完整(相对或绝对)路径。

import shutil
shutil.copyfile(source, dest)

如果要复制所有目录,则应使用以下内容

shutil.copytree(src, dest)  

或者更特别是在你的情况下

shutil.copytree("user-site-export/sleep","userdata/sleep")

推荐阅读