не работает: скопировать файлы, найденные в файле .csv, в список, затем, если в определенной папке, скопировать в папку назначения - PullRequest
0 голосов
/ 25 апреля 2020

Я в значительной степени копирую код из этой темы (Python - копирую указанные c файлы из списка в новую папку ), но не могу заставить его работать и могу ' не вижу, что не так. Любое понимание?

CSV-файл имеет имя изображения (то есть image.png) в первом столбце и значительное / незначительное в следующем столбце, но оно еще не используется. Просто тестирую его на 10 файлах прямо сейчас. 10 файлов находятся в папке, из которой я хочу скопировать.

    # ----------------------------------------IMPORT PACKAGES -------------------
    import os
    import shutil
    import csv

    # ------------------------------------copy IMAGES using  --------------
    # ----------------------GET PATHS----------------------------------------
    folderpath = os.getcwd() # /home/ubuntu/Deep-Learning/FinalProject/data_random
    destination = '/home/ubuntu/Deep-Learning/FinalProject/data_subset'

    # ------------------LIST OF IMAGE NAMES----------------------------------
    filestofind = []

    with open("labels_test.csv", "r") as f:
        filestofind = [x[0] for x in csv.reader(f) if x]

    print(filestofind)
    # successfully gets list of image names
    # [' image1.png', ' image2.png', ...'image10.png]

    # ------FIND IMAGE IN FOLDER AND COPY AND MOVE TO DESTINATION FOLDER----
    for filename in filestofind:
        print('filename1',filename) #filename1  image1.png - looks ok
        for file in folderpath(filename):
            print('filename2',filename)  #It is seeing this as a string and 
                                         #iterating through the string 
                                        # says it is not callable
                                        # filename2 /
                                        # filename2 h
                                        # filename2 o
                                        # filename2 m        
                   # expected to look for filename1 above in the folderpath
            if os.path.isfile(filename):
                 shutil.copy(filename, destination)
        else:
            print('file does not exist: filename')

    print('All done!')

1 Ответ

0 голосов
/ 25 апреля 2020

Приведенный ниже код может помочь решить проблему, с которой вы столкнулись-


    all_files = [f for f in os.listdir(folderpath) if os.path.isfile(os.path.join(folderpath, f))]
    # This returns all the files you have in your search directory
    files_to_copy = [x for x in filestofind if x in all_files]
    # This returns the common files you want to copy
    for file_to_copy in files_to_copy:
        shutil.copy(file_to_copy, destination)

PS: Вы можете скопировать вышеупомянутое после # ------FIND IMAGE IN FOLDER AND COPY AND MOVE TO DESTINATION FOLDER----"

Ссылка:

https://docs.python.org/3/library/os.html#os .walk

...