web-dev-qa-db-fra.com

Quelle est la bonne façon de prendre un chemin de répertoire comme entrée utilisateur?

Ci-dessous, un extrait de code que j'essaie d'utiliser pour prendre un chemin de répertoire comme "entrée brute" de l'utilisateur. Je reçois l'erreur suivante après que l'entrée a été prise par l'utilisateur:

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'

En ignorant ce que j'ai fait ci-dessous, y a-t-il une façon particulière dont je suis censé prendre le chemin de l'utilisateur afin que Python l'accepte?

Par exemple, le répertoire et le fichier que je recherche sont

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+")
11
mrokeowo

Je pense que vous devriez essayer quelque chose comme:

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()
12
tipanverella

Il semble que vous souhaitiez vérifier si le répertoire existe.

Si c'est le cas, voir 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.

Vous pouvez faire comme ça:

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

Je l'ai compris ... J'ai oublié d'ajouter l'extension de fichier à la fin du nom de fichier sur mon chemin de répertoire; Je n'ai pas remarqué que je le coupais en copiant/collant simplement le nom de mon fichier .... le programme fonctionne maintenant ... merci à tous!

2
mrokeowo