如何显示列表?

时间:2011-10-27 12:13:27

标签: python file-io

我正在构建一个有效的简单函数(删除文件)。但最后我想返回有效删除的文件列表。

这是功能:

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 个答案:

答案 0 :(得分:4)

问题是os.remove没有返回任何内容。

但您可以tryexcept

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)

答案 1 :(得分:3)

os.remove()返回None,所以你永远不会追加到列表中。

答案 2 :(得分:3)

os.remove()不会返回值,因此您的if语句会有效

if None:
    RemovedFiles.append(file)

另一方面,如果无法删除文件,它会抛出异常,因此以下内容应该有效:

try:
    os.remove(file)
except OSError:
    pass
else:
    RemovedFiles.append(file)

答案 3 :(得分:2)

这是因为os.remove()不返回任何内容。您的if条件评估为false。

试试这个:

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

这应该有效