如何在Python中按扩展名删除文件?

2024-04-23 05:07:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是想做一个脚本来删除扩展名为“.zip”的条目。

import sys
import os
from os import listdir

test=os.listdir("/Users/ben/downloads/")

for item in test:
    if item.endswith(".zip"):
        os.remove(item)

每当我运行脚本时,我得到:

OSError: [Errno 2] No such file or directory: 'cities1000.zip'

cities1000.zip显然是我的下载文件夹中的一个文件。

我在这里做错了什么?os.remove是否需要文件的完整路径?如果这是问题所在,那么在当前脚本中,我如何才能在不完全重写它的情况下做到这一点。


Tags: 文件fromtestimport脚本ossys条目
3条回答

对于此操作,需要将文件名附加到文件路径上,以便命令知道要查找的文件夹。

您可以使用^{}命令在python中以可移植的方式正确地执行此操作。
例如:

import sys
import os

directory = "/Users/ben/downloads/"
test = os.listdir( directory )

for item in test:
    if item.endswith(".zip"):
        os.remove( os.path.join( directory, item ) )

您可以将中的路径设置为dir_name变量,然后对os.remove使用os.path.join

import os

dir_name = "/Users/ben/downloads/"
test = os.listdir(dir_name)

for item in test:
    if item.endswith(".zip"):
        os.remove(os.path.join(dir_name, item))

避免反复连接自己的替代方法:使用glob模块连接一次,然后让它直接返回路径。

import glob
import os

dir = "/Users/ben/downloads/"

for zippath in glob.iglob(os.path.join(dir, '*.zip')):
    os.remove(zippath)

相关问题 更多 >