Dateien in einer Liste

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
Prometheus
User
Beiträge: 12
Registriert: Sonntag 26. November 2006, 16:14

Hi.

Code: Alles auswählen

#!/bin/python

import os
import tarfile
os.chdir("/home/x")
dw_bak = ['ild', 'rem.txt']
archive_name = "FooBar.tar"
tar = tarfile.open(archive_name, "w:bz2")
for content in [dw_bak]:
  tar.add(content)
  tar.close()
Fehlermeldung:
Traceback (most recent call last):
File "dokubak.py", line 10, in <module>
tar.add(content)
File "/usr/lib/python2.6/tarfile.py", line 1948, in add
if self.name is not None and os.path.abspath(name) == self.name:
File "/usr/lib/python2.6/posixpath.py", line 336, in abspath
if not isabs(path):
File "/usr/lib/python2.6/posixpath.py", line 52, in isabs
return s.startswith('/')
AttributeError: 'list' object has no attribute 'startswith'
Es liegt daran, dass zwei Werte in der Variable dw_bak sind. Kann mir bitte jemand kurz sagen wie ich bei Dateien gleichzeitig in einer Variable deklarieren kann und dass sie aber auch archiviert werden.

Danke

P.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ich denke, du solltest die eckigen Klammern in der Zeile mit dem for-statement weglassen:

Code: Alles auswählen

>>> dw_bak = ['ild', 'rem.txt']
>>> for content in [dw_bak]:
...     print repr(content)
... 
['ild', 'rem.txt']
>>> for content in dw_bak:
...     print repr(content)
... 
'ild'
'rem.txt'
Prometheus
User
Beiträge: 12
Registriert: Sonntag 26. November 2006, 16:14

File "dokubak.py", line 11, in <module>
tar.add(content)
File "/usr/lib/python2.6/tarfile.py", line 1937, in add
self._check("aw")
File "/usr/lib/python2.6/tarfile.py", line 2362, in _check
raise IOError("%s is closed" % self.__class__.__name__)
IOError: TarFile is closed
Versuchte ich auch schon.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Warum schließt du die Instanz von tarfile.open denn innerhalb der Schleife (also nach jeder Iteration)? Du solltest Zeile 12 ausrücken.
Prometheus
User
Beiträge: 12
Registriert: Sonntag 26. November 2006, 16:14

Die einfachsten Dinge sind meistens die schwersten.

Danke. :)
Antworten