为什么在运行时不移动文件?

2024-09-30 19:33:47 发布

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

因此,我制作了一个小“应用程序”,检查文件是否以特定的扩展名(.png或.jpg)结尾,但我的问题是,如果我将其转换为循环,并在循环运行时下载某些内容,则不会将文件移动到预定位置。它仅在启动时移动文件

import os
import shutil

DownloadsDir = ""
Downloadslst = os.listdir(DownloadsDir) 
ImageFolder = ''

while True:
    for files in Downloadslst:
        if files.endswith(('.png','.jpg')):
            shutil.move(DownloadsDir + files, ImageFolder)
            print("File moved succefully.")

Tags: 文件import应用程序内容pngos结尾files
2条回答

试试这个:

import os
import shutil

DownloadsDir = ""
ImageFolder = ''

while True:
    Downloadslst = os.listdir(DownloadsDir) 
    for files in Downloadslst:
        if files.endswith(('.png','.jpg')):
            shutil.move(DownloadsDir + files, ImageFolder)
            print("File moved succefully.")

os.listdir(...)是一个一次性操作,在调用时列出当前目录中的所有文件。集合是固定的,不是动态更新的;这只是一个简单的list。而且lists不会基于看似随机的条件进行自我更新,比如当目录中的文件发生更改时。如果希望列表保持更新,则需要多次调用该函数

我会:

processed = set()
to_process = set()

while has_smth_to_download:
    download_some_files()
    for item in os.listdir(DownloadsDir):
        if item not in processed:
             to_process.add(item)
             processed.add(item)
    for files in to_process:
        if files.endswith(('png','.jpg')):
            shutil.move(DownloadsDir + files, ImageFolder)
            print("File moved succefully.")
    to_process.clear()

相关问题 更多 >