在Python代码中删除文件时出错

我有一个小小的代码,允许我打印到文件夹中的图像。

但是,我希望在打印后立即删除它们 - 我想在RaspberryPI上尝试此操作,并且我没有足够的空间来存储所有图像。

如果有人能帮助我,将非常感激。

这是我的代码:

monRep = "/Users/XX/Desktop/XXX/"
import os, mimetypes, random
while True:
    fpaths = []
    for fname in os.listdir(monRep):
        fpath = os.path.join(monRep, fname)
        if os.path.isfile(fpath):
            mt = mimetypes.guess_type(fpath)[0]
            ext = os.path.splitext(fpath)[1]
            if mt: mt = mt.split('/')[0].lower()
            else: mt = False
            #if ext.lower() in ('.bmp','.pict', '.JPG', '.jpg', '.pdf'): mt = 'image'
            if mt in ('image',): fpaths.append(fpath)

    for fpath in fpaths:
        newpath = fpath.replace('/Users/XX/Desktop/XXX/','/Users/XX/Desktop/XXX2/')
        os.rename(fpath,newpath)
        command = "lpr "+newpath
        print (command)
        os.system(command)

我试图写在最后

os.remove ('/Users/Aym/Desktop/eden2/')

但是,我有这样的:

SError:[Errno 1]不允许操作:'/ Users / XX / Desktop / XXX2 /'

我尝试了在这个论坛上推荐的shutil方法

import os
import shutil

for root, dirs, files in os.walk('/Users/XX/Desktop/XXX2/'):
    for f in files:
        os.unlink(os.path.join(root, f))
    for d in dirs:
        shutil.rmtree(os.path.join(root, d))

但没有发生


我在树莓上的空间也较少。 你首先可以交换的是:

LIST_NAME = ['.jpg', '.bmp', '.mickey_mouse'] 
file = [file for file in os.listdir(CAMERA_DIR) for type_name in LIST_NAME if file.endswith(type_name)]

这在某种程度上等同于您上面的整个搜索引擎。 其中LIST_NAME是您寻找的任何内容以及CAMERA_DIR ==“/ Users / XX / Desktop / XXX /”

上面的代码将使您的代码更简单,更紧凑,而无需使用额外的模块。

对于os.path.join(CAMERA_DIR,file_name)下的每个找到的文件,可以使用从XX到XX2(shutil模块)的简单移动操作。

在打印完成或执行任何操作后的最后一步,使用简单命令彻底删除XX2文件夹:shutil.rmtree(XX2)

这绝对是工作,并在Python3中清理你的代码。 玩的开心! 我甚至可以推荐:使用/ tmp / NAMEXX文件夹。 在最坏的情况下,它只是在你的覆盆子的临时文件夹!

链接地址: http://www.djcxy.com/p/42431.html

上一篇: Error on deleting file in a python code

下一篇: strange output when using flags in python