2017-06-04 1 views
0

Je ne comprends pas pourquoi quelque chose d'aussi simple n'est pas très intuitif.Python passant l'entrée de l'utilisateur du nom du fichier à ouvrir

C'est ce que j'ai jusqu'à présent:

print("Enter name of file on Desktop:") 
    filename = sys.stdin.readline() 


    directory = os.path.join(os.path.expanduser("~"),"Desktop") 
     for subdir, dirs, files in os.walk(directory): 
      for file in files: 
       if file.startswith(filename): 
        f = open(os.path.join(subdir, file),'r+', encoding="Latin-1") 
        data = f.read() 
        print(data) 
        f.close() 

Pourquoi ne puis-je passer le sys.stdin qui a été attribué au nom de variable à la 'if':

`if file.startswith(filename):`? 

J'ai essayé:

if file.startswith(str(filename)): 
    if file.startswith("'" + filename + "'") 
    if file.startswith(filename): 

aucune option semble "passer par" et aucune erreur pop-up.

Il prétend juste que je n'ai rien passé. De l'aide? Merci.

+0

Code Format par indentant quatre espaces. N'utilisez que des backticks pour les petits morceaux de code. – Carcigenicate

+0

Aussi, chaque fois que vous obtenez des erreurs, vous devez les poster – Carcigenicate

Répondre

2

Une ligne, lue depuis stdin ou depuis un fichier, inclut un caractère de nouvelle ligne. Il semble peu probable que l'un de vos noms de fichiers se termine par une nouvelle ligne.

Mais n'utilisez pas sys.stdin.readline pour obtenir des informations de la part de l'utilisateur. Utilisez la fonction input nom approprié: (. Notez en Python 2.x, vous devez utiliser raw_input plutôt que input)

filename = input("Enter name of file on Desktop:") 

+0

Je savais que c'était quelque chose de stupide. Merci. Je l'ai eu pour travailler. –