如何显示列表?

2 投票
4 回答
1283 浏览
提问于 2025-04-17 05:06

我正在写一个简单的函数,用来删除文件。不过最后我想返回一个实际被删除的文件列表。

这是我的函数:

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 个回答

3

os.remove() 这个函数不会返回任何值,所以你的 if 语句实际上变成了:

if None:
    RemovedFiles.append(file)

另一方面,如果它无法删除文件,就会抛出一个异常,所以下面的代码应该可以正常工作:

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

os.remove() 这个函数不会返回任何东西,也就是说它执行完后不会给你任何结果。所以你不能把它的结果加到列表里。

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)

撰写回答