Gzip.file(datei) oder tarfile.file(datei)

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
tejste
User
Beiträge: 10
Registriert: Montag 1. Dezember 2008, 17:52

Hallo,

erst mal vielen Dank für die super Tipps hier. In einige Threads habe ich schon geschaut, habe aber meinen Fall nicht gefunden.
Ich habe folgendes Problem.

Ich möchte gern eine Datei in der form datei.gz öffnen. Da die Datei erst dynamisch durch einen Suchalgorithmus gefunden werden muss, funktioniert das

x= tarfile.open(r“/ordner/ordner1/datei.gz“,“w“)

nicht.

Der Suchalgorithmus gibt eine Dateivariable (Datei) zurück und die kann ich mit etwas tricksen durch

x=file(Datei,“w“) öffnen (warum nicht mit open(Datei,"w")?? Leider ist die Datei getarrt und jeder Versuch diese mit tarfile.file(…) zu öffnen schlägt fehl.

Hat irgendeiner eine Idee.

Vielen Dank im Voraus.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Drückt sich "funktioniert nicht" auch in irgendwelchen konkreten Fehlermeldungen aus, oder passiert wirklich *nichts*? Und was verstehst du unter einer Dateivariable?
tejste
User
Beiträge: 10
Registriert: Montag 1. Dezember 2008, 17:52

Variable heisst: die Datei ist nicht spezifiziert sondern wird erst ermittelt. Folglich kann der Dateiname nicht "hart verdrahtet" werden sondern muss dynamisch bleiben.

und die Fehlermeldungen:

ValueError undiscernible mode
AttributeError module object has no attribute file
TypeError an integer is required
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Es ist für andere am einfachsten nachzuvollziehen und zu analysieren, wenn du den Code zeigst, der den Fehler produziert und den Original-Traceback.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

tejste hat geschrieben:Variable heisst: die Datei ist nicht spezifiziert sondern wird erst ermittelt. Folglich kann der Dateiname nicht "hart verdrahtet" werden sondern muss dynamisch bleiben.
Gut, also ein String mit dem Dateinamen? Rest s. numerix.
tejste
User
Beiträge: 10
Registriert: Montag 1. Dezember 2008, 17:52

Hallo, Du hast recht,

hier mein kern"Code" (ziemlich unpythonisch) aber ich werde mich bessern

Code: Alles auswählen

import tarfile
import gzip
import zipfile

dateisuche=int(raw_input("Index: "))
if d.has_key(dateisuche):
    x = d[dateisuche] 
    print x
else: 
    print "den Index gibts nicht"
    
a="/opt/log"
dateisuche1 = a+x
#print dateisuche1 
datei = tarfile.file(dateisuche1,"rb")
bla1 = datei.read()
print bla1


Traceback (most recent call last):
  File "Logfile_seeker.py", line 135, in <module>
    datei = tarfile.file(dateisuche1,"rb")
AttributeError: 'module' object has no attrib





tejste
User
Beiträge: 10
Registriert: Montag 1. Dezember 2008, 17:52

ein banaler Tipp in einem sehr frühen Post (Leonidas glaube ich, gab den Tipp keine "from ... import *" zu verwenden). Scheinbar kommt der Fehler durch mein os import einige Seiten vorher zustande. Wenn ich diesen Sternchen Import rausnehme funktionierts auch mit "open" und gzip.

Ein Klasse Forum, wenn man lange genug sucht, findet man wahrscheinlich alles :lol:

Code: Alles auswählen

datei = gzip.open(dateisuche1,"r")
Antworten