from Tkinter import *
import socket, sys, os
import tkMessageBox
root = Tk()
root.title("File Deleter v1.0")
root.config(bg='black')
root.resizable(0, 0)
text = Text()
text3 = Text()
frame = Frame(root)
frame.config(bg="black")
frame.pack(pady=10, padx=5)
frame1 = Frame(root)
frame1.config(bg="black")
frame1.pack(pady=10, padx=5)
text.config(width=35, height=1, bg="black", fg="white")
text.pack(padx=5)
def button1():
try:
x = text.get("1.0", END)
os.remove(x)
except WindowsError:
text3.insert(END, "File Not Found... Try Again\n")
def clear():
text.delete("1.0", END)
c = Button(frame1, text="Clear", width=10, height=2, command=clear)
c.config(fg="white", bg="black")
c.pack(side=LEFT, padx=5)
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
text3.config(width=35, height=15, bg="black", fg="white")
text3.pack(side=LEFT, fill=Y)
scrollbar.config(command=text3.yview)
text3.config(yscrollcommand=scrollbar.set)
w = Label(frame, text="Delete A File")
w.config(bg='black', fg='white')
w.pack(side=TOP, padx=5)
b = Button(frame1, text="Enter", width=10, height=2, command=button1)
b.config(fg="white", bg="black")
b.pack(side=LEFT, padx=5)
root.mainloop()
我不知道为什么删除代码不起作用,即使文件存在,我也会收到“找不到文件”。
答案 0 :(得分:3)
当我在Linux上运行此代码并在button1()
中放置一个断点时,我发现x
的值包含一个尾随的换行符。这意味着os.remove()
调用不起作用,因为我输入的文件名实际上并不包含换行符。如果我删除尾随换行符,则代码可以正常工作。
答案 1 :(得分:0)
也许x不是你想象的那样,只是一个猜测,但也许那里有一些空白或者某种东西,试试这个来检查
def button1():
try:
x = text.get("1.0", END)
print repr(x)
os.remove(x)
except WindowsError, e:
print e
text3.insert(END, "File Not Found... Try Again\n")
答案 2 :(得分:0)
我相信gnibbler正在走上正轨,空白就是问题所在。文本小部件为您提供结束字符\ n。尝试将.strip()添加到text.get的末尾,或者您可以使用Entry小部件而不是Text Widget,因为Text小部件只有一行而已。
x = text.get('1.0', END).strip()