2017-06-13 69 views
0

我收到上述錯誤,當我試圖從我的目錄列表錯誤:ValueError異常:list.remove(X):在列表X不同時,從目錄列表

>>> from os import listdir 
>>> from os.path import isfile,join 
>>> dr = listdir(r"C:\Users\lenovo\Desktop\ronit") 
>>> dr 

輸出刪除.z​​ip文件刪除文件夾:

['7101', '7101.zip', '7102', '7102.zip', '7103', '7103.zip'] 

現在去除.zip文件我寫了下面的代碼:

>>> dr.remove("*.zip") 

輸出:

Traceback (most recent call last): 
File "<pyshell#18>", line 1, in <module> 
dr.remove("*.zip") 
ValueError: list.remove(x): x not in list 

我在哪裏出錯了?

+2

你想從目錄中刪除?或者變量? –

+0

從錯誤中不明顯嗎? '「* .zip」'不在你的列表中...... –

回答

2

list刪除時,您不能使用通配符,你必須來遍歷它,如果你想與部分匹配做掉,例如:

filtered_list = [file_name for file_name in dr if file_name[-4:] != ".zip"] 
# ['7101', '7102', '7103'] 
+0

出於好奇,任何不使用'endswith'的理由? – Wondercricket

+0

我認爲如果使用'.endswith()'而不是依賴切片符號,它會更健壯。 –

+0

@Wondercricket - 性能......'str.endswith()'完全一樣,只是經歷了幾個箍。 Python版本的速度提高了10-20%,並且不像被認爲是「非Pythonic」那樣神祕或難以理解。 – zwer

0
import os 
from os import listdir 
from os.path import join 

dir = 'C:\\Users\\lenovo\\Desktop\\ronit' 
dr=os.listdir(dir) 

for f in dr: 
    if item.endswith(".zip"): 
     os.remove(join(dir, f)) 
+0

看到其他答案是如何被接受的,可以假定OP沒有要求從目錄中刪除文件 – Wondercricket

相關問題