繁体   English   中英

Makedirs 正在创建文件而不是文件夹

[英]Makedirs is creating a file not a folder

我遇到了一个问题,当我尝试创建一个文件夹时,它会创建一个文件。 具体来说,它发生在变量文件夹中。 代码如下,我使用的是python 2.7

import os

i = False
while i != True:
    fil = raw_input("Enter Filename Here: ")
    i = os.path.exists(fil)
    if i == False: print("File does not exist! Try Again.")

folder = raw_input("Enter Output Folder Here: ")
try:
    os.path.exists(folder)
except:
    if not os.path.exists(folder):
        print("Creating Folder for You.")
        os.makedirs(folder)

output = raw_input("Enter Chlorophyll-a Output Filename Here: ")
full = os.path.join(folder, output)

if os.path.exists(full):
    yesno = raw_input("Output file already exists are you sure you want to overwrite? Yes/No: ")
    if yesno == "Yes":
        k = open(full, "w")
    if yesno == "No":
        raise SystemExit("Exiting File Now!")
if not os.path.exists(full):
    print ("File Does Not Exist. I Will Make It For You.")
    k = open(full, "w")

在我的电脑上我收到这个错误

Traceback (most recent call last):
  File "C:/Users/---/.PyCharmCE2019.2/config/scratches/scratch_6.py", line 33, in <module>
    k = open(full, "w")
IOError: [Errno 2] No such file or directory

我究竟做错了什么? 我似乎无法弄清楚

你永远不会创建文件夹,在

try:
    os.path.exists(folder)
except:
    if not os.path.exists(folder):
        print("Creating Folder for You.")
        os.makedirs(folder)

如果os.path.exists引发异常,则您正在尝试创建该文件夹,但它没有,它返回TrueFalse ,然后您在

k = open(full, "w")

像这样使用它

folder = raw_input("Enter Output Folder Here: ")

if not os.path.exists(folder):
    print("Creating Folder for You.")
    os.makedirs(folder)

我不知道您正在使用此代码实现什么,但我对您的代码进行了一些更改。 我认为这会对你有所帮助。

import os

fil = input("Enter Filename Here: ")
if not os.path.exists(fil):
    print("File doesn't exist!")

    folder = input("Enter Output Folder Here: ")
    if not os.path.exists(folder):
        print("Creating folder for you.")
        os.makedirs(folder)

    output = input("Enter Chlorophyll-a Output Filename Here: ")
    full = os.path.join(folder, output)

    if os.path.exists(full):
        yesno = input("Output file already exists are you sure you want to overwrite? Yes/No: ")
        if yesno == "Yes":
            k = open(full, "w")
            k.close()
        if yesno == "No":
            raise SystemExit("Exiting File Now!")
    else:
        print ("File Does Not Exist. I Will Make It For You.")
        k = open(full, "w")
        k.close()

问题是您的代码在目录存在时不会创建目录。 考虑:

try:
    os.path.exists(folder)
except:
    if not os.path.exists(folder):
        print("Creating Folder for You.")
        os.makedirs(folder)

在 try 块中,您调用os.path.exists(folder) ,但这不会产生任何异常。 这意味着except子句中的代码不会被执行。 您想要的是创建目录,不管它是否存在,并忽略错误:

try:
    os.makedirs(folder)
except OSError:
    pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM