删除每个第n个文件Python

时间:2017-12-11 04:56:33

标签: python

我希望使用Python脚本从文件夹中删除每个第10个文件。我环顾四周,找到了这段代码:

import os
l = os.listdir('/Users/myname/Desktop/TBD')

for n in l[::10]:
    os.unlink(n)

我为此创建了一个Python脚本,然后使用

在终端中运行它
python filename.py

这就是我得到的回报:

FileNotFoundError: [Errno 2] No such file or directory: 'Pic-1.jpg'

我用代码指向的文件夹是包含1000张照片的文件夹。它正在读取第一个文件夹的名称,但是没有通过删除过程。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

这是因为listdir()只返回指定文件夹中条目的名称,而没有路径元素。因此,当您尝试取消链接这些文件时,您会尝试在当前工作目录的上下文中执行此操作,而不是在/Users/myname/Desktop/TBD/中。只需添加要取消链接的每个文件名的路径,或确保/Users/myname/Desktop/TBD是您的工作目录。

此外,为了一般安全,你应该检查你要取消链接的元素是否实际上是一个文件,而不是目录或其他任何东西:

import os

dir_to_clean = '/Users/myname/Desktop/TBD'
l = os.listdir(dir_to_clean)

for n in l[::10]:
    target = dir_to_clean + '/' + n
    if os.path.isfile(target):
        os.unlink(target)