Как отобразить список? - PullRequest
       2

Как отобразить список?

2 голосов
/ 27 октября 2011

Я создаю простую функцию, которая работает (удалить файлы). Но в конце я хочу вернуть список файлов, которые были эффективно удалены.

Это функция:

def deleteFiles(files):
    # empty list
    RemovedFiles = list()

    for file in files:
        # Delete the file
        if os.remove(file):
            RemovedFiles.append(file)

    return RemovedFiles

Я запускаю эту функцию с:

print deleteFiles([/home/xyz/xyz.zip])

Это эффективно удаляет xyz.zip, но возвращает пустой список: []. Что я тут не так делаю?

Ответы [ 4 ]

4 голосов
/ 27 октября 2011

Проблема в том, что os.remove ничего не возвращает.

Однако вы можете try и except:

for filename in filenames:
    try:
        # try to remove the file
        os.remove(filename)
    except OSError:
        pass
        # file not removed (maybe does not exist or is write-protected)
        # you may report an error here
    else:
        # this executes only if os.remove was successful
        RemovedFiles.append(filename)
3 голосов
/ 27 октября 2011

os.remove() не возвращает значение, поэтому ваш оператор if становится эффективным

if None:
    RemovedFiles.append(file)

С другой стороны, он выдает исключение, если может 't удалите файл, поэтому должно работать следующее:

try:
    os.remove(file)
except OSError:
    pass
else:
    RemovedFiles.append(file)
3 голосов
/ 27 октября 2011

os.remove () возвращает None, поэтому вы никогда не сможете добавить в список.

2 голосов
/ 27 октября 2011

Это потому, что os.remove () ничего не возвращает.Ваше условие if оценивается как ложное.

Попробуйте это:

def deleteFiles(files):
# empty list
RemovedFiles = list()

for file in files:
    # Delete the file
    try:
        os.remove(file)
        RemovedFiles.append(file)
    except OSError:
        continue

return RemovedFiles

Это должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...