Verzeichniss aus Datei Auslesen und als Variable nutzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

Ich möchte 2 Variablen zusammenbringen in einer steht das Verzeichnis und in der anderen die Datei, so das ich diese zusammen weiter verwenden kann.

Den Pfad lese ich aus einer Date aus und nenne ihn "path"

"path" möchte ich nun zum auslesen einer Datei aus diesen Verzeichnis nutzen

die Bezeichnung der Datei ist ebenfalls eine Variable "file"

Code: Alles auswählen

with open("file.txt", "r") as e:
            lines = e.read().splitlines()
            file = lines


with open("path.txt", "r") as f:
            lines = f.read().splitlines()
            path = lines
            
            
x = ?????
           
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Grundsätzlich baut man Bestandteile eines Pfades mit os.path.join zusammen.
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Irgendwie kann ich deinen Text und dein en Code nicht ganz zusammenbringen...
Den Code weggelassen verstehe ich dein Problem wie folgt:
Du hast den Pfad in einer Variablen gespeichert (sagen wir directory) und du hast die file in einer Variablen gespeichert (sagen wir file). Nun möchtest du Pfad und Datei zusammen als einen String bringen, der unter einer Variablen verfügbar sein soll (sagen wir dir_f) und die Datei öffnen. Wenn das so stimmt, kannst du das wie folgt lösen:

Code: Alles auswählen

directory = 'usr/name/Documents'
file = 'datei.txt'
dir_f = directory + '/' + file

datei = open(dir_f, 'r')
datei.close()
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

@frcom: Wie ich bereits schrieb, baut man die Bestandteile mit os.path.join zusammen. Auf keinen Fall sollte man das mit + tun.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Streifenhase1: Du hast zwei Dateien, und in der einen sind viele Pfade und in der anderen viele Dateinamen und Du willst alle kombinieren? Oder ist da jeweils nur eine Zeile drin?
Streifenhase1
User
Beiträge: 90
Registriert: Dienstag 22. Mai 2018, 07:15

ja sind mehrere Zeilen drinnen und jede für eine Variable

habe es jetzt so gelöst

Code: Alles auswählen

Ok Danke ich habe jetz das so gelöst und scheint zu Funktionieren.

[code]
x = '%s%s' % (path,file)

aber wenn wir gerade dabei sind angenommen ich habe ein Zahl in der Datei stehen die 6 oder mehr stellen hat, dieser Zahl gebe ich die Variable "z" nun möchte ich aber nicht die ganze Zahl sondern nur die ersten 3 Zahlen Ausgeben.


Wie Formatiere ich das am besten?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Bitte benutze os.paht.join() um Pfade zusammenzubauen.
Ich frage mich immer, warum Leute fragen, nur um hinterher die Antworten zu ignorieren.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1012
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Pfade niemals selbst manipulieren!
Pfade von Windows sind anders aufgebaut, als unter Linux.
Fang lieber mit pathlib zuerst an. Übe damit, bis du wichtigsten Methoden kennst.
Die ignoranz wird dir spätestens dann Probleme bereiten, wenn du Code für alle drei wichtigen Plattformen schreibst.

Code: Alles auswählen

from pathlib import Path

verzeichnis = Path('C:\\')
datei = Path('autoexec.bat')
pfad = verzeichnis / datei

# nun den Inhalt lesen.
text = pfad.read_text()

# oder mit der Methode open
with pfad.open()as fd:
    text = fd.read()
Man kann auch mit den Low-Level-Tools von os und os.path arbeiten.
Manchmal muss man das sogar.

Bei mir gibt os.path.sep folgendes aus:
'/'

Bei dir unter Windows (vermute ich mal einfach)
'\\'
Der erste backslash escaped den zweiten.

Deswegen sieht man oft, dass Entwickler unter Windows, Windows-Pfade so angeben: r"C:\Windows\back\new"
Würde man das nicht als regex-literal angeben, müsste man es so schreiben: "C:\\Windows\\back\\new".
So müsste es aber auch gegehen: "C:/Windows/temp".
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten