Seite 1 von 1

Dateien in einer Liste

Verfasst: Sonntag 14. Juni 2009, 20:37
von Prometheus
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.

Verfasst: Sonntag 14. Juni 2009, 20:40
von derdon
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'

Verfasst: Sonntag 14. Juni 2009, 20:44
von Prometheus
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.

Verfasst: Sonntag 14. Juni 2009, 20:47
von derdon
Warum schließt du die Instanz von tarfile.open denn innerhalb der Schleife (also nach jeder Iteration)? Du solltest Zeile 12 ausrücken.

Verfasst: Sonntag 14. Juni 2009, 20:49
von Prometheus
Die einfachsten Dinge sind meistens die schwersten.

Danke. :)