Попытка переместить файлы с определенными именами в новый каталог - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь переместить файлы, которые начинаются с PS-110, в новую созданную мной папку с именем PS-110.

import shutil, glob, os

files_move = []
files_move = [files_move.append(f) for f in glob.glob('PS-110*.pdf')]

destination = r"C:\Users\kjurgens\Downloads\PS-110"

for f in files_move:
        shutil.move(f, destination)

При запуске появляется следующая ошибка:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "C:\Users\kjurgens\AppData\Local\Programs\Python\Python38-32\lib\shutil.py", line 771, in move
    if _samefile(src, dst):
  File "C:\Users\kjurgens\AppData\Local\Programs\Python\Python38-32\lib\shutil.py", line 217, in _samefile
    return os.path.samefile(src, dst)
  File "C:\Users\kjurgens\AppData\Local\Programs\Python\Python38-32\lib\genericpath.py", line 100, in samefile
    s1 = os.stat(f1)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType

Любой вклад будет принята с благодарностью.

1 Ответ

1 голос
/ 30 января 2020
files_move = [files_move.append(f) for f in glob.glob('PS-110*.pdf')]

Это не создает список файлов, он создает список, полный None. Это потому, что files_move.append(f) возвращает None. И вы перезаписываете files_move новым списком к тому времени, когда закончится все это выполнение.

Учитывая, что glob.glob() уже возвращает список, вам вообще не нужно files_move.

Просто сделайте:

import shutil, glob, os

destination = r"C:\Users\kjurgens\Downloads\PS-110"

for f in glob.glob('PS-110*.pdf'):
    shutil.move(f, destination)
...