Удаление файла - PullRequest
       10

Удаление файла

1 голос
/ 17 февраля 2010
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()

Я не понимаю, почему код удаления не работает, я получаю «Файл не найден», даже если файл существует.

Ответы [ 3 ]

3 голосов
/ 17 февраля 2010

Когда я запускаю этот код в Linux и помещаю точку останова в button1(), я вижу, что значение x включает в себя завершающий символ новой строки.Это означает, что вызов os.remove() не будет работать, потому что имя файла, которое я набрал, на самом деле не содержало символа новой строки.Если я удаляю завершающий символ новой строки, код работает.

0 голосов
/ 17 февраля 2010

Я полагаю, что gnibbler на пути к пробелу, являющемуся проблемой. Текстовый виджет дает вам символы конца строки \ n. Попробуйте добавить .strip () в конец вашего text.get, или вы можете использовать виджет Entry, а не Text Widget, поскольку ваш текстовый виджет только одна строка.

x = text.get('1.0', END).strip()
0 голосов
/ 17 февраля 2010

Возможно, х не то, о чем вы думаете, просто предположение, но, может быть, есть какой-то пробел или что-то еще, попробуйте это, чтобы проверить

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...