Python 列表理解不适用于函数参数

Python list comprehension not working for function parameters

我正在尝试获取目录中所有文件的列表并将其删除。我使用了以下代码并且运行良好。

代码:

import os

file_list=os.listdir(mypath)
for x in file_list:
    os.remove(mypath+"/"+x)

但是当我尝试使用列表理解方式进行操作时,它给出了 syntax error

import os

file_list=os.listdir(mypath)
os.remove(mypath+"/"+x) for x in file_list

我们不能用列表推导中的参数调用函数吗?还有其他方法吗?

import os

file_list=os.listdir(mypath)
[os.remove(mypath+"/"+x) for x in file_list]

我猜你错过了 []

编辑:

Syntax

Following is the syntax for remove() method:

os.remove(path)

Parameters

    path -- This is the path, which is to be removed.

Return Value

This method does not return any value.`
import os

file_list=os.listdir(mypath)
[os.remove(mypath + os.sep +x) for x in file_list]

或者只是

[os.remove(mypath + os.sep +x) for x in os.listdir(mypath)]

for x in os.listdir(mypath):
    os.remove(mypath + os.sep +x)

您也可以使用 os.path.join() 获取路径。对于 'x' 目录和 'y' 文件,os.file.join('x', 'y') 会给你 'x/y'。所以,你可以在这里使用它:

[os.remove(os.path.join(mypath, x) for x in os.listdir(mypath)]

但是,这里不需要使用列表理解,因为列表压缩 returns 一个列表。在这种情况下,您不想使用 os.remove() 的对象列表(那为什么要存储对象?)。所以,最好简单地使用:

for x in os.listdir(mypath):
    os.remove(os.path.join(mypath, x)

根据您的示例,您正试图删除某个文件夹中的所有文件。与其遍历文件夹的所有文件,并逐个删除每个文件,更好的方法是使用 shutil.rmtree()。它将递归地删除给定路径的所有文件(类似于 unix 中的 rm -r /path/to/folder)。

import shutil
shutil.rmtree('/path/to/folder')