我的程序找不到它刚刚创建的路径,该程序用于对下载文件夹中的文件进行排序。 如果找到新类型的文件,它应该为该文件类型创建一个文件夹。
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)
答案 0 :(得分: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
通常也会更快并且使用更少的内存,特别是如果您的文件很大的话。)