简体   繁体   中英

ipynb to py, move all file with name* to folder

Hello I am trying to convert a notebook py to a regular python file, it creates new folders, and copies files to these based on the file name. How do I do this in py? Thanks!

 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")
        

I tried now with

            # 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()

but I am still not getting the files copied

You can use shutil library to copy files. Snippet below can be used to copy source file to destination path. Yet, be careful destination path should be full (relative or absolute) path.

import shutil
shutil.copyfile(source, dest)

If you want to copy all directory then you should use the following

shutil.copytree(src, dest)  

or more spesifically in your case

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM