2014-04-08 4 views
9

Unten ist ein Codeschnipsel, den ich benutze, um einen Verzeichnispfad als "rohe Eingabe" vom Benutzer zu nehmen. Ich erhalte die folgende Fehlermeldung nach der Eingabe vom Benutzer genommen wird:Was ist der richtige Weg, um einen Verzeichnispfad als Benutzereingabe zu nehmen?

Traceback (most recent call last): 
    File "C:\Users\larece.johnson\Desktop\Python Programs\Hello World 2", line 14, in <module> 
    f = open(str,"r+")          #I open the text file here which the user gave me 
IOError: [Errno 2] No such file or directory: 'C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01' 

ignorierend, was ich unten getan haben, ist es eine besondere Art und Weise soll ich den Weg vom Benutzer nehmen, so dass Python sie akzeptiert?

Zum Beispiel das Verzeichnis und die Datei, die ich suche ist

C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01 
import re  #this library is used so that I can use the "search" function 
import os  #this is needed for using directory paths and manipulating them 

str =""  #initializing string variable for raw data input 

#print os.getcwd() 
#f = open("C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+") 

str = raw_input("Enter the name of your text file - please use/backslash when typing in directory path: "); #User will enter the name of text file for me 

f = open(str,"r+") 
+2

Btw .: '/' ist ein Schrägstrich; ein umgekehrter Schrägstrich wäre '\'. – poke

Antwort

6

denke ich, Sie so etwas wie versuchen sollte:

import sys 
import os 

user_input = raw_input("Enter the path of your file: ") 

assert os.path.exists(user_input), "I did not find the file at, "+str(user_input) 
f = open(user_input,'r+') 
print("Hooray we found your file!") 
#stuff you do with the file goes here 
f.close() 
+1

Ich denke, ein Problem könnte sein, ob der Benutzer den Dateipfad in Anführungszeichen setzen soll oder nicht. Das Skript, das ich zur Verfügung gestellt habe, erwartet keine Anführungszeichen. – tipanverella

+0

Ich benutze Windows und Python 2,7 BTW, wenn es einen Unterschied macht ... aber Ihre Antwort lesen ... überprüfen, um sicherzustellen, dass der Pfad vorhanden ist, ist gut, aber es gibt immer noch, dass es nicht da ist .... Ich kenne die Datei und Pfad existiert, weil ich dorthin gehe, wo sich die Datei befindet und "Eigenschaften" überprüfe, um den Speicherort der Datei zu erhalten, ich kopiere auch den Namen der Datei und füge sie am Ende des Pfades hinzu. Ich schneide und füge den gesamten Pfad als "Eingabe" in mein Programm ein. – mrokeowo

+0

Ich verwende kein Windows, aber es sollte nicht viel ausmachen. Ich würde das Skript in eine Datei namens test.py und fragen test.py als Eingabe verwenden, als eine Überprüfung. – tipanverella

4

Es Sie überprüfen möchten, scheint wenn das Verzeichnis existiert.

Wenn ja, siehe os.path.isdir.

os.path.isdir(path) 
    Return True if path is an existing directory. 
    This follows symbolic links, so both islink() 
    and isdir() can be true for the same path. 

Sie können wie folgt tun:

s = raw_input(); 
if os.path.isdir(s): 
    f = open(s, "r+") 
else: 
    print "Directory not exists." 
0

ich es herausgefunden ... Ich habe vergessen, die Dateierweiterung am Ende des Dateinamens auf meinem Verzeichnispfad hinzuzufügen; Ich habe nicht bemerkt, dass ich es abgeschnitten habe, indem ich einfach den Namen meiner Datei kopiert/eingefügt habe ... das Programm funktioniert jetzt ... danke euch allen!

Verwandte Themen