【问题标题】:python can't find file it just madepython找不到它刚刚制作的文件
【发布时间】:2023-03-04 07:15:07
【问题描述】:

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

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)

【问题讨论】:

  • 我已经有一段时间没有在 Python 中胡闹了,但是这行 os.makedirs("/mnt/external_sd/Download/" + ext) 不是创建一个目录,而不是一个文件,然后您尝试打开它吗?
  • @charmlessCoin:嗯,他确实会在上面附加"/" + File
  • @charmlessCoin 是的,它确实创建了一个目录。
  • @DavidRobinson 哎呀,刚刚注意到了。现在我明白他在做什么了。

标签: python file path


【解决方案1】:

你创建目录

"/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 通常也会更快并且使用更少的内存,尤其是在您的文件很大的情况下)。

【讨论】:

  • 感谢您发现这个小而明显的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 2021-12-10
  • 2018-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
相关资源
最近更新 更多