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')
我正在尝试获取目录中所有文件的列表并将其删除。我使用了以下代码并且运行良好。
代码:
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')