首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中不存在mkdir错误文件路径。

在python中不存在mkdir错误文件路径。
EN

Stack Overflow用户
提问于 2020-08-20 22:14:23
回答 3查看 436关注 0票数 1

请大家都是python的初学者,并试图创建一个简单的待办事项列表程序,但现在被困在建立目录的时候。我将张贴下面的所有建议代码,以帮助和使它更好是欢迎的。

代码语言:javascript
复制
#!/usr/bin/env python3

def_directory = "~/Documents/"

def fi_le():
    x = int(input("Enter The Length of Your To-Do-List: "))

#this next line of codes should generate the number of list you want
xf = list(range(1, (x + 1)))

#This next liine asks for the To-do list name
import os.path
directory = def_directory
namer = input("Enter File Name: ")
file_name = namer + ".txt"
file_path = os.path.join(directory, file_name)

if not os.path.isdir(directory):
    os.mkdir(directory)

f = open(file_path, "w+")

#This next line of code takes in user To-Do-List
for i in xf:
    l = ("=>" + str(i) + ". ")

f.close()

def dir_check():
    print("\n")
    print("*NOTE: PLEASE NOTE YOUR DEFAULT DIR FOR SAVED FILE IS THE 'DOCUMENTS FOLDER'")
    print("IF YOU WANT TO CHANGE DIR ENTER 'C' TO PROCEED ELSE ENTER 'D' TO USE DEFAULT FOLDER")
    print("\n")

ask_user = input("Do you want to Proceed with DEFAULT FOLDER: ").upper()

if ask_user == "D":
    fi_le()

elif ask_user == "C":
    user_folder_name = ("~/" + input("Specify Folder Name: "))
    def_directory = user_folder_name
    fi_le()

else:
    print("Please Enter 'D' Or 'C' to Continue")
    dir_check()

dir_check()



print("\n" * 5)
print("===============> End <===============")
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-20 22:29:20

有许多问题

    1. Indentation是important

    1. You需要将目录变量定义为完整的path:

例如:在Unix系统中:

def_directory = "/Users/PycharmProjects/StackOverFlow-pip/“

实际上,

    1. You并不是在写入文件。要编写,您需要调用function.

write

对于在xf中的i:l= (“=>”+ str(i) + ")。f.write(l)

完全修正的守则:

代码语言:javascript
复制
def_directory = "/Users/PycharmProjects/StackOverFlow-pip/"


def fi_le():
    x = int(input("Enter The Length of Your To-Do-List: "))


    #this next line of codes should generate the number of list you want
    xf = list(range(1, (x + 1)))

    #This next liine asks for the To-do list name
    import os.path
    directory = def_directory
    namer = input("Enter File Name: ")
    file_name = namer + ".txt"
    file_path = os.path.join(directory, file_name)

    if not os.path.isdir(directory):
        os.mkdir(directory)

    f = open(file_path, "w+")

    #This next line of code takes in user To-Do-List
    for i in xf:
        u = input("Enter the value")
        f.write(("=>" + str(i) + ". " + u))

    f.close()


def dir_check():
    print("\n")
    print("*NOTE: PLEASE NOTE YOUR DEFAULT DIR FOR SAVED FILE IS THE 'DOCUMENTS FOLDER'")
    print("IF YOU WANT TO CHANGE DIR ENTER 'C' TO PROCEED ELSE ENTER 'D' TO USE DEFAULT FOLDER")
    print("\n")

ask_user = input("Do you want to Proceed with DEFAULT FOLDER: ").upper()

if ask_user == "D":
    fi_le()

elif ask_user == "C":
    user_folder_name = ("~/" + input("Specify Folder Name: "))
    def_directory = user_folder_name
    fi_le()

else:
    print("Please Enter 'D' Or 'C' to Continue")
    dir_check()

dir_check()



print("\n" * 5)
print("===============> End <===============")

输出:

代码语言:javascript
复制
=>1. Eat Hamburger=>2. Eat Cheeseburger
票数 0
EN

Stack Overflow用户

发布于 2020-08-20 22:23:52

可能的问题是中间目录不存在。如果是这样的话,使用os.makedirs而不是os.mkdir

参见这里的文档:https://docs.python.org/3/library/os.html#os.makedirs

票数 0
EN

Stack Overflow用户

发布于 2020-08-20 22:32:53

除了Ahmet之外,您不应该在文件系统上创建目录之前执行这种检查:

代码语言:javascript
复制
if not os.path.isdir(directory):
    os.mkdir(directory)

相反,您应该尝试直接创建它,并管理异常:

代码语言:javascript
复制
try:
    os.mkdirs(directory)
except FileExistsError:
    # do something 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63513823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档