Как я получаю эту ошибку при циклическом просмотре файлов в каталоге? «OSError: [Errno 2] Нет такого файла или каталога» - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть тысячи файлов, которые мне нужно удалить в каталоге. Я хочу сохранить первые десять (в алфавитном / числовом формате), которые соответствуют условиям. Например, я хочу сохранить 'part-of-file-name-abc00000.filetype', но не 'part-of-file-name-abc42422.filetype'. Ниже приведен код, который я использую для этого:

import os


i = 0
for f in os.listdir('/dir/dir'):
    if 'part-of-file-name' in f:
        i = i + 1
        if i > 10:
            os.remove(f)
    else:
        os.remove(f)
print("Files found: " + str(i))
print("Files removed: " + str(i - 10))

Это ошибка, которую я получаю:

File "delete_data_files.py", line 11, in <module>
    os.remove(f)
OSError: [Errno 2] No such file or directory: 'part-of-file-name-i-want-then-other-parts.filetype'

Это не имеет смысла для меня. Файл явно существует; в противном случае я не буду читать полное имя файла в ошибке.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020
import os
i = 0
path = './dir/dir'
for f in os.listdir(path):
    print "file path", f
    f = path + "/" + f;
    if 'part-of-file-name' in f:
        i = i + 1
        if i > 10:
            os.remove(f)
    else:
        os.remove(f)
print("Files found: " + str(i))
print("Files removed: " + str(i - 10))

Вывод: путь к файлу part-of-file-name.txt

Найдено файлов: 1

Удалено файлов: -9

Вы предоставляете только имя файла. Вам необходимо указать полный путь для удаления файлов.

1 голос
/ 12 февраля 2020

проверьте ваш путь к каталогу

os.listdir('./dir/dir')

, если каталоги находятся в файле скрипта, который вы запускаете. Вы можете проверить наш путь существует

import os
path = './dir/dir'
print(os.path.exists(path))

# True
# Means the path exists if its false means you are directing the path to a false location
...