2016-09-26 5 views
4

Angenommen, ich habe eine Datei unter /home/ashraful/test.txt. Ich möchte einfach nur die Datei öffnen. Nun ist meine Frage:Welches ist eine gute Übung für Python-formatierte Zeichenketten?

Welches ist eine gute Praxis?

Lösung 1:

dir = "/home/ashraful/" 
fp = open("{0}{1}".format(dir, 'test.txt'), 'r') 

Lösung 2:

dir = "/home/ashraful/" 
fp = open(dir + 'test.txt', 'r') 

Die beiden so, wie ich Datei öffnen können.

Thanks :)

+0

Wenn es darum geht, Strings in Python im Allgemeinen zu kombinieren, würde ich sagen, dass, was besser lesbar ist, das ist ein Prinzip von Python. http://docs.python-guide.org/en/latest/writing/style/ In diesem Fall wäre es der zweite, wenn es nicht die besseren Möglichkeiten gäbe, dies zu tun. –

Antwort

14

statt String Verwendung os.path.joinos.path.expanduser verketten den Pfad und öffnen Sie die Datei zu erzeugen. (Vorausgesetzt, Sie versuchen, eine Datei in Ihrem Home-Verzeichnis zu öffnen)

with open(os.path.join(os.path.expanduser('~'), 'test.txt')) as fp: 
    # do your stuff with file 
+0

Ich war gerade dabei, das zu tippen. Möglicherweise können Sie eine Zeile Beispielcode hinzufügen, um es vollständiger zu machen? – SuperSaiyan

+0

Wenn sich die zu öffnende Datei im selben Verzeichnis wie das Skript befindet, das sie öffnet, ist 'open ('test.txt')' die beste Lösung. Manchmal sind Dinge nur in meinem Home-Verzeichnis, denn dort habe ich begonnen, an ihnen zu arbeiten, und sie werden bewegt ... – cco

+0

Vielen Dank. jetzt macht es Sinn. –

2

Ich denke, der beste Weg, um uns wäre os.path.join() hier

import os.path 

#… 
dir = '/home/ashraful/' 
fp = open(os.path.join(dir, 'test.txt'), 'r') 
4

Wenn Ihr Ziel ist es, Öffnen Sie Dateien/Verzeichnisse, wie andere erwähnt haben, sollten Sie die os.path.join() Methode verwenden. Wenn Sie jedoch den String in Python formatieren möchten - wie der Titel Ihrer Frage schon sagt -, sollte Ihr erster Ansatz bevorzugt werden. Zitat aus PEP 310:

Diese PEP für integrierte String-Formatierung Operationen ein neues System vorgeschlagen, soll als Ersatz für die bestehende ‚%‘ string Formatierung Operator.

Verwandte Themen