AttributeError: 'module' Objekt hat kein Attribut '[x]'

Ich versuche, ein Skript zu erstellen, das alle .txt-Dateien in deinem Desktop auf den Desktop / org verschiebt, ist der Code wie folgt:

import os import shutil userhome = os.path.expanduser('~') src = userhome + '/Desktop/' dst = src+ 'org/' def main(): txtlist = os.listdir(src) for file in txtlist: sortFiles(file) def sortFiles(file): if file.endswith(".txt"): shutil.move(src+file,dst) main() 

Wenn ich die .py ausführen bekomme ich diesen Fehler: AttributeError: 'module' Objekt hat kein Attribut 'copy' . Allerdings, wenn ich lösche die letzte Zeile "main ()" und ich importiere dieses Skript als Modul in der Python-Kommandozeile und ich rufe .main () von dort aus funktioniert es einwandfrei. Wie kann ich diese Arbeit als Skript machen ?

  Traceback (most recent call last): File "C:\Python32\org.py", line 3, in <module> import shutil File "C:\Python32\lib\shutil.py", line 14, in <module> import tarfile File "C:\Python32\lib\tarfile.py", line 50, in <module> import copy File "C:\Python32\lib\copy.py", line 61, in <module> from org.python.core import PyStringMap File "C:\Python32\org.py", line 19, in <module> main() File "C:\Python32\org.py", line 12, in main sortFiles(file) File "C:\Python32\org.py", line 16, in sortFiles shutil.move(src+file,dst) AttributeError: 'module' object has no attribute 'move' 

Ich verwende Python 3.2

One Solution collect form web for “AttributeError: 'module' Objekt hat kein Attribut '[x]'”

Wow, das ist ein Pech. Sie können verstehen, was los ist, wenn man sich den Traceback ansieht:

 Traceback (most recent call last): File "C:\Python32\org.py", line 3, in <module> import shutil 

Also, die erste Zeile, die ausgeführt wird, ist import shutil . Das ist, wo alles los geht falsch – das ist überraschend, da es ein eingebautes Modul ist.

  File "C:\Python32\lib\shutil.py", line 14, in <module> import tarfile File "C:\Python32\lib\tarfile.py", line 50, in <module import copy 

So shutil import tarfile , die importiert copy .

  File "C:\Python32\lib\copy.py", line 61, in <module> from org.python.core import PyStringMap 

Und copy hat diese schöne Sache, die versucht, PyStringMap aus einem Modul namens org.python.core zu importieren. Nun existiert dieses Modul normalerweise nicht, was dazu führen würde, dass copy stattdessen einen alternativen Code verwendet wird: PyStringMap = None .

Das Problem ist, dass es etwas gibt, das org : dein eigenes Skript, org.py Also, was passiert ist, dass Python versucht, etwas namens python.core.PyStringMap in Ihrem org.py . Um so weit gehen zu können, muss es das Skript ausführen , einschließlich des main() am Ende:

  File "C:\Python32\org.py", line 19, in <module> main() File "C:\Python32\org.py", line 12, in main sortFiles(file) File "C:\Python32\org.py", line 16, in sortFiles shutil.copy(src+file,dst) AttributeError: 'module' object has no attribute 'copy' 

Und das führt uns zur shutil.copy Linie, die ein Aufruf zum shutil Modul ist. Da ist dies das Modul, das wir noch importieren (von der ersten Zeile!), Ist der Import noch nicht ganz, so dass die copy Inneren nicht existiert und den AttributeError .

Dies ist eine sehr unglückliche Situation, in der die Benennung Ihres Skripts einen kreisförmigen Import für etwas verursacht hat, das nicht existiert.

Sie können dies einfach beheben, indem Sie Ihr Skript in etwas anderes umbenennen.

Python ist die beste Programmiersprache der Welt.