Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件夹访问权限被拒绝python[权限:Errno 13]_Python_Tkinter_Permission Denied - Fatal编程技术网

文件夹访问权限被拒绝python[权限:Errno 13]

文件夹访问权限被拒绝python[权限:Errno 13],python,tkinter,permission-denied,Python,Tkinter,Permission Denied,大家好,看到这个问题并试图解决它! 我正在制作一个基于GUI的项目规划器,我需要在其中添加一个项目名称、需求和步骤,然后保存它们。我还添加了一个功能,根据相关性向其中添加文件。但当我尝试测试它时,我得到了以下结果:PermissionError:[Errno 13]权限被拒绝:“”。尽管我读了很多这样的问题,但我不知道我错在哪里。我已经尝试了chmod,但即使这样也不起作用。代码如下: from tkinter import * from tkinter import messagebox f

大家好,看到这个问题并试图解决它! 我正在制作一个基于GUI的项目规划器,我需要在其中添加一个项目名称、需求和步骤,然后保存它们。我还添加了一个功能,根据相关性向其中添加文件。但当我尝试测试它时,我得到了以下结果:
PermissionError:[Errno 13]权限被拒绝:“”
。尽管我读了很多这样的问题,但我不知道我错在哪里。我已经尝试了
chmod
,但即使这样也不起作用。代码如下:

from tkinter import *
from tkinter import messagebox 
from tkinter.filedialog import askopenfilename
import os


WIN = Tk()
files =[]

def copy(src,dest):
    os.chmod(dest, 0o777)
    with open(src,'r') as f, open(dest,'w+') as f2:
        f2.write(f)

def start(name):
    os.startfile(name)

#<---Button functions--->
def Addfile():
    global files
    WIN.filename =  askopenfilename(initialdir = "C:",title = "choose your file")
    print(WIN.filename)
    added_fr = Frame(text_box_files)
    added_fr.pack()
    f_name = Label(added_fr,text=WIN.filename)
    f_name.pack()
    #dest = shutil.copyfile(WIN.filename, destination) 
    files.append(WIN.filename)
    f_b = Button(added_fr,text="Open",command=lambda x = WIN.filename: start(x))
    f_b.pack()

def submit():
    global files
    name = name_ent.get()
    req = text_box.get("1.0",END)
    steps = text_box_step.get("1.0",END)
    if name != "" and name not in os.listdir() and req != "" and steps != "":
        os.mkdir(name)
        with open(f"{name}\\req.txt","w") as f:
            f.write(req)
        with open(f"{name}\\steps.txt","w") as f2:
            f2.write(steps)
        os.mkdir(f"{name}\\main")
        with open(f"{name}\\main\\main.py","w") as f3:
            f3.write(f"#Main .py file of {name} project")
    elif name in os.listdir():
        messagebox.showerror("Project already exists", "A project with this name already exists! Try something else") 
    elif name=="" or req=="" or steps=="":
        messagebox.showerror("Naming error", "Project name/steps/requirement can't be left blank")

    print(files) 
    for fi in files:
        copy(fi, name) 

        

    
#<----Frames---->
head = Frame(WIN, padx=15,pady=10)
head.pack()

main_frame1 = Frame(WIN)
main_frame1.pack()

main_frame2 = Frame(WIN,highlightbackground="black" , highlightthickness=1)
main_frame2.pack()

name_frame = Frame(main_frame1,highlightbackground="black" , highlightthickness=1,padx=382,pady=3)
name_frame.pack()

requirements_frame = Frame(main_frame2)
requirements_frame.grid(row=0,column=0)

files_frame = Frame(main_frame2,highlightbackground="black", highlightthickness=1)
files_frame.grid(row=0,column=1)

#<----Title---->
title = Label(head, text="Project Planner", font=("Arial bold",18))
title.pack()

#<----Name-Frame---->
name_lb = Label(name_frame,text="Project name: ").grid(row=0,column=0,sticky="e")
name_ent = Entry(name_frame,width=20)
name_ent.grid(row=0,column=1)

#<----Requirements---->
requirements_lb = Label(requirements_frame, text="Requirements: ")
requirements_lb.pack()

text_box = Text(requirements_frame,width=100,height=5)
text_box.pack(side = TOP, expand = True, fill = BOTH)

#<----Step---->
step_lb = Label(requirements_frame,text="Steps/Ideas to solve: ")
step_lb.pack()

text_box_step = Text(requirements_frame,width=100,height=17)
text_box_step.pack(side = TOP, expand = True, fill = BOTH)

#<----Files---->
files_lb = Label(files_frame,text="Add files: ")
files_lb.pack()


text_box_files = Text(files_frame,width=20)
text_box_files.pack()


add = Button(files_frame,text="Add",command=Addfile)
add.pack(ipadx=30)


#<----Submit---->
submit = Button(WIN,text="Submit",command=submit)
submit.pack(ipadx=30,pady=2)

WIN.mainloop()

从tkinter导入*
从tkinter导入消息框
从tkinter.filedialog导入askopenfilename
导入操作系统
WIN=Tk()
文件=[]
def副本(src、dest):
os.chmod(目的地,0o777)
开放式(src,'r')为f,开放式(dest,'w+')为f2:
f2.写入(f)
def启动(名称):
os.startfile(名称)
#
def Addfile():
全局文件
WIN.filename=askopenfilename(initialdir=“C:”,title=“选择您的文件”)
打印(WIN.filename)
添加了\u fr=框架(文本框\u文件)
添加了_fr.pack()
f_name=Label(添加了_fr,text=WIN.filename)
f_name.pack()
#dest=shutil.copyfile(WIN.filename,destination)
files.append(WIN.filename)
f_b=按钮(添加了_fr,text=“Open”,command=lambda x=WIN.filename:start(x))
f_b.pack()
def submit():
全局文件
name=name\u ent.get()
req=文本框get(“1.0”,结束)
步骤=文本框步骤获取(“1.0”,结束)
如果名称!=“”和名称不在os.listdir()和req中!=”“还有台阶"":
os.mkdir(名称)
将open(f“{name}\\req.txt”,“w”)作为f:
f、 写入(请求)
打开(f“{name}\\steps.txt”,“w”)作为f2:
f2.写入(步骤)
os.mkdir(f“{name}\\main”)
将open(f“{name}\\main\\main.py”,“w”)作为f3:
f3.write(f“{name}项目的#Main.py文件”)
os.listdir()中的elif名称:
showerror(“项目已存在”,“具有此名称的项目已存在!请尝试其他内容”)
elif名称==“”或请求==“”或步骤==“”:
messagebox.batherRor(“命名错误”,“项目名称/步骤/要求不能为空”)
打印(文件)
对于文件中的fi:
副本(fi,姓名)
#
头部=框架(WIN,padx=15,pady=10)
head.pack()
主框架1=框架(WIN)
主框架1.pack()
主框架2=框架(WIN,highlightbackground=“黑色”,highlightthickness=1)
主框架2.pack()
name_frame=frame(主_frame1,highlightbackground=“black”,highlightthickness=1,padx=382,pady=3)
name_frame.pack()
需求框架=框架(主框架2)
要求与框架网格(行=0,列=0)
文件\u frame=frame(主\u frame2,highlightbackground=“black”,highlightthickness=1)
文件\u frame.grid(行=0,列=1)
#
标题=标签(标题,text=“Project Planner”,字体=(“Arial bold”,18))
title.pack()
#
name\u lb=Label(name\u frame,text=“Project name:”).grid(行=0,列=0,sticky=“e”)
name\u ent=Entry(name\u frame,width=20)
名称网格(行=0,列=1)
#
需求=标签(需求框架,text=“需求:”)
要求(磅装)
文本框=文本(要求框,宽度=100,高度=5)
text_box.pack(side=TOP,expand=True,fill=BOTH)
#
步骤lb=标签(需求框架,text=“要解决的步骤/想法:”)
步骤磅包()
文本框步骤=文本(要求框,宽度=100,高度=17)
text\u box\u step.pack(side=TOP,expand=True,fill=BOTH)
#
files\u lb=标签(files\u frame,text=“Add files:”)
文件包()
文本框文件=文本(文件框,宽度=20)
text\u box\u files.pack()
添加=按钮(文件\框架,text=“添加”,命令=添加文件)
添加.pack(ipadx=30)
#
提交=按钮(WIN,text=“提交”,command=submit)
提交包(ipadx=30,pady=2)
WIN.mainloop()
另外,我的操作系统是Windows,
请提供帮助。

请澄清您是如何得到该错误的。我添加了一个文件,并从“尽管Windows支持chmod(),但您只能使用它设置文件的只读标志(通过stat.s_IWRITE和stat.s_IREAD常量或相应的整数值)。所有其他位都将被忽略。”给出@klauds。如上所述,最简单的方法是确保您尝试写入的文件夹为用户设置了写入权限。我仍然收到相同的错误。也许我需要在别的地方用。请帮忙