Python ile hareket etmeden önce dosyayı kapat [kapalı]


-1

Shutil.move () kullanarak bir dosyayı taşımaya çalışırken bir sorun var, muhtemelen dosya hala açık. Hata ayıklayıcıda çalıştırırken sorunum yok ... Ama betiği çalıştırdığımda şu hatayı alıyorum:

WindowsError: [Error 32] Başka bir işlem tarafından kullanıldığı için işlem dosyaya erişemiyor.

İşte soruna neden olan kodumun bir bloğu. Sorunu önlemek için bu nasıl değiştirilebilir?

while len(args) > 0:
    outdir = args.pop()
    indir  = args.pop()
    inouts.append( (indir,outdir) )

    listFile = os.listdir(indir)
    os.chdir(indir)

    for report in listFile:
        abs_report = os.path.abspath(report)
        for line in open(abs_report):
            if header not in line:
                if ref in line:
                    shutil.move(abs_report,Pull)
                    logger.write("File " + report + " has been moved to " + Pull + " at " +  str(datetime.now()) + "\n")
                    break
                else:
                    shutil.move(abs_report,outdir)
                    logger.write("File " + report + " has been moved to " + outdir + " at " + str(datetime.now()) + "\n")
                    break

Sormanız engellendiğinde soru sorma yeri burası değildir Yığın Taşması . Onların takip etmelisin soru yasakları hakkında rehberlik
Mokubai

Şey ... Amacını anlıyorum. Kurallarını ve rehberliklerini takip etmeye çalışıyordum ama hala bir soru göndermeme izin vermedi. Dolayısıyla bir seçeneğim yoktu.
susik

Yanıtlar:


1

Dosyayı taşımadan önce döngüden çıkmanız gerekir:

listFile = os.listdir(indir)
os.chdir(indir)

for report in listFile:
    abs_report = os.path.abspath(report)
    is_pull = None
    for line in open(abs_report):
        if header not in line:
            is_pull = (ref in line)
            break
    if is_pull is not None:
        if is_pull:
            shutil.move(abs_report,Pull)
            logger.write("File " + report + " has been moved to " + Pull + " at " +  str(datetime.now()) + "\n")
        else:
            shutil.move(abs_report,outdir)
            logger.write("File " + report + " has been moved to " + outdir + " at " + str(datetime.now()) + "\n")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.