如何显示列表?
我正在写一个简单的函数,用来删除文件。不过最后我想返回一个实际被删除的文件列表。
这是我的函数:
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
这个函数不会返回任何结果。
不过,你可以使用 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)