在python cod中删除文件时出错

2024-04-25 12:41:39 发布

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

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

但是我想在打印完后就把它们删除-我想在覆盆子上试试这个,我没有足够的空间来存储所有的图像。在

如果有人能帮助我,我将不胜感激。在

这是我的代码:

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)

最后我试着写

^{pr2}$

但后来我有了这个:

错误:[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))

但什么也没发生


Tags: pathinimportforifosusersjoin
1条回答
网友
1楼 · 发布于 2024-04-25 12:41:39

我在覆盆子上的空间也少了。你首先可以交换的是:

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/”

上面的几行代码将使您的代码更简单和紧凑,而不需要使用额外的模块。在

对于下面找到的每个文件,可以使用一个从XX到XX2(shutil模块)的简单移动操作os.path.join操作系统(摄像机方向,文件名)。在

打印或执行任何操作后的最后一步,使用简单命令完全删除XX2文件夹: 舒蒂尔.rmtree(三十二)

这绝对可以用Python3清理代码。玩得高兴! 我甚至可以推荐:使用/tmp/NAMEXX文件夹。在最坏的情况下,它只是在你的树莓临时文件夹!在

相关问题 更多 >