我正在构建一个有效的简单函数(删除文件)。但最后我想返回有效删除的文件列表。
这是功能:
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,但返回一个空列表:[]
。我在这里做错了什么?
答案 0 :(得分: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)
答案 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
这应该有效