0

我的程序找不到它刚刚创建的路径,该程序用于对下载文件夹中的文件进行排序。如果它找到一种新类型的文件,它应该为该文件类型创建一个文件夹。

import os

FileList = os.listdir("/sdcard/Download/")
for File in FileList:
    #print File
    extension = ''.join(os.path.splitext(File)[1])
    ext = extension.strip('.')
    if os.path.exists("/mnt/external_sd/Download/" + ext):
        Data = open("/sdcard/Download/" + File, "r").read()
        file("/mnt/external_sd/" + ext + "/" + File, "w").write(Data)
    elif os.path.exists("/mnt/external_sd/Download/" + ext) != True:
        os.makedirs("/mnt/external_sd/Download/" + ext)
        Data = open("/sdcard/Download/" + File, "r").read()
        file("/mnt/external_sd/" + ext + "/" + File, "w").write(Data)
4

1 回答 1

3

你创建目录

"/mnt/external_sd/Download/" + ext

但是你正试图写信给

"/mnt/external_sd/" + ext + "/" + File

您将Download文件夹放在该路径中。将最后一行更改为:

file("/mnt/external_sd/Download/" + ext + "/" + File, "w").write(Data)

if else顺便说一句,通过从语句中取出共享行并使用shutil.copy而不是读入整个文件然后再次写出,编写最后七行会更短更清晰:

import shutil
if not os.path.exists("/mnt/external_sd/Download/" + ext):
    os.makedirs("/mnt/external_sd/Download/" + ext)
shutil.copy("/sdcard/Download/" + File, "/mnt/external_sd/Download/" + ext + "/" + File)

(使用shutil通常也会更快并且使用更少的内存,特别是如果您的文件很大)。

于 2013-08-18T08:48:29.880 回答