[英]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.