2016-04-12 15 views
1

Ich versuche, dass mein Programm einen vom Benutzer eingegebenen Dateipfad öffnet. Dieser Eintrag wird in meiner data [0] Liste gespeichert, die ich dann mit der Funktion os.system aufrufen kann. Anstatt den gespeicherten Dateipfad zu öffnen, öffnet sich der Explorer und bringt mich zu Eigene Dateien. 1. Warum passiert das?2. Wie kann ich dies ändern, damit der Explorer zu den gespeicherten Benutzerdaten geöffnet wird?Python: Programm öffnet falschen Dateipfad im Explorer?

import Tkinter as tk 
import pickle 
import os 


data = [] 

class MyPath(tk.Frame): 


def __init__(self, parent): 
    tk.Frame.__init__(self, parent) 
    self.parent = parent 
    self.pack() 
    MyPath.make_widgets(self) 

def make_widgets(self): 
    self.parent.title("MyPath") 

    #self.textbox = Text(root) 
    #self.textbox.pack() 

    # create a prompt, an input box, an output label, 
    # and a button to do the computation 
    self.prompt = tk.Label(self, text="Enter your Filepath:", anchor="w") 
    self.textbox = tk.Text(self) 
    self.entry = tk.Entry(self) 
    self.open = tk.Button(self, text="Open", command = self.open) 
    self.view = tk.Button(self, text="View", command = self.view) 
    self.submit = tk.Button(self, text="Save", command = self.save) 
    self.output = tk.Label(self, text="") 
    self.clear_button = tk.Button(self, text="Clear text", command=self.clear_text) 

    # lay the widgets out on the screen. 
    self.prompt.pack(side="top", fill="x") 
    self.entry.pack(side="top", fill="x", padx=20) 
    self.output.pack(side="top", fill="x", expand=True) 
    self.textbox.pack(side="top", fill="x") 
    self.view.pack(side="bottom") 
    self.submit.pack(side="bottom") 
    self.clear_button.pack(side="bottom") 
    self.open.pack(side="top") 


def clear_text(self): 
    self.entry.delete(0, 'end') 
    self.textbox.delete(1.0, 'end') 


def save(self): 
    # get the value from the input widget 

    try: 
     a = self.entry.get() 
     result = data.append(self.entry.get()) 

    except ValueError: 
     result = "Please enter filepaths only" 

    #saves list to pickle file 
    #pickle.dump(data, open("save.p", "wb")) 

    # set the output widget to have our result 
    self.output.configure(text=result) 
    print (data) 

def view(self): 
    pickle.load(open("save.p", "rb")) 
    self.textbox.insert("1.0", str(pickle.load(open("save.p", "rb")))) 
    print pickle.load(open("save.p", "rb")) 

def open(self): 
    #src = "/Users/matt/Documents/Python/MyApp.py" 
    dst = data 
    #path = pickle.load(open("save.p", "rb")) 
    os.system('Explorer "data[0]"') 

if __name__ == "__main__": 
    root = tk.Tk() 
    MyPath(root).pack(fill="both", expand=True) 
    root.mainloop() 

Jede Hilfe wird sehr geschätzt!

+0

Beim Aufruf von Instanzmethoden , mach 'self.method()' statt 'Class.method (self)'. Die letztere Form wird üblicherweise für statische Methoden verwendet. –

Antwort

2
os.system('Explorer "%s"' % data[0]) 

Ursache Zeichenfolge am Ende sieht aus wie ‚Explorer Daten [0]‘ und, wenn Explorer kann nicht die Pfaddaten findet [0] es Standort für Benutzer auf Standard zurückgesetzt - Eigene Dateien