Seite 1 von 1

Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 15:20
von Streifenhase1
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 = ?????
           

Re: Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 15:51
von sparrow
Grundsätzlich baut man Bestandteile eines Pfades mit os.path.join zusammen.

Re: Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 15:54
von frcom
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()

Re: Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 15:57
von sparrow
@frcom: Wie ich bereits schrieb, baut man die Bestandteile mit os.path.join zusammen. Auf keinen Fall sollte man das mit + tun.

Re: Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 16:01
von Sirius3
@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?

Re: Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 16:38
von Streifenhase1
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?

Re: Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 16:44
von sparrow
Bitte benutze os.paht.join() um Pfade zusammenzubauen.
Ich frage mich immer, warum Leute fragen, nur um hinterher die Antworten zu ignorieren.

Re: Verzeichniss aus Datei Auslesen und als Variable nutzen

Verfasst: Sonntag 17. März 2019, 16:47
von DeaD_EyE
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".