簡體   English   中英

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)]

但是,此處不需要使用列表理解,因為列表壓縮會返回一個列表。 在這種情況下,您不想使用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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM