Angenommen, ich habe eine Datei foo.py und innerhalb der Datei möchte ich eine Datei bar.py ausführen. Aber bar.py befindet sich nicht im selben Verzeichnis wie foo.py, sondern in einem Unterverzeichnis namens baz. Wird execfile
funktionieren? Was ist mit os.system
?Wie führe ich eine Python-Datei nicht im Verzeichnis einer anderen Python-Datei aus?
Antwort
Fügen Sie einfach eine leere __init__.py
Datei baz
zu signalisieren, ist ein Modul, und von foo.py
tun:
from baz import bar
Es sei denn natürlich, Sie haben einen guten Grund, nicht baz
in ein Modul zu machen (und execfile verwenden).
Frage impliziert, dass Sie diese als Skripte ausführen möchten, also ja: Sie könnten execfile in 2.X oder subprocess verwenden (rufen Sie den Interpreter auf und übergeben Sie das Skript als Argument). Sie müssen nur absolute Pfade zu den Dateien angeben.
# Python 2.X only!
execfile ('c:/python/scripts/foo/baz/baz.py')
Doing es buchstäblich ist spröde, natürlich. Wenn baz immer ein subirectory von foo ist, könnte man es aus der foo ableiten Datei:
baz_dir = os.path.join(os.path.dirname(__file__), "baz")
baz_file = os.path.join(baz_dir, "baz.py")
execfile(baz_file)
Wenn beide Dateien in Positionen sind, die von Ihrem Python zu sehen ist - das heißt, die Ordner in sys.path sind oder waren hinzugefügt zum Suchpfad mit site können Sie Baz von Foo importieren und rufen Sie es Funktionen direkt auf. Wenn Sie tatsächlich auf Informationen von Baz reagieren müssen, anstatt nur eine Aktion auszulösen, ist dies ein besserer Weg. As long as there is an init.py in each folder könnten Sie tun nur
import baz
baz.do_a_function_defined_in_baz()
import sys, change „sys.path“ durch den Pfad während der Laufzeit angehängt wird, dann das Modul importieren, die
- 1. Wie führe ich Rails/Rake aus einem anderen Verzeichnis?
- 2. Wie führe ich ein Java-Programm aus einem anderen Verzeichnis?
- 3. Wie führe ich Java im Kompatibilitätsmodus aus?
- 4. Wie führe ich eine Symfony-Aufgabe im Hintergrund ordnungsgemäß aus?
- 5. Wie führe ich eine Methode/Funktion für eine Instanz aus einer nicht instanziierten Klasse aus?
- 6. Wie führe ich eine Datei mit einer verknüpften Anwendung einer anderen Erweiterung aus?
- 7. Wie führe ich eine Zeilensperre aus?
- 8. Wie führe ich Programme im selben Verzeichnis wie die Windows Batch-Datei aus?
- 9. Wie führe ich eine bessere Kolorierungsfunktion aus?
- 10. Wie führe ich SQL Stored Procedures aus einer anderen Stored Procedure aus?
- 11. Wie führe ich eine Qt-Anwendung aus?
- 12. Wie führe ich eine Methode in einer MVC-Anwendung aus?
- 13. Wie führe ich io_service in einem anderen Thread aus?
- 14. Wie führe ich Komponententests aus, die in meiner Anwendungsoberfläche statt im PHP-Verzeichnis gespeichert sind?
- 15. Wie bekomme ich den vollständigen Pfad einer Datei aus einem anderen Verzeichnis im Shell-Skript?
- 16. Wie führe ich einen Java Nippet aus einem anderen
- 17. Wie führe ich eine Aufgabe täglich aus Java aus?
- 18. Wie führe ich ein Skript mit einer BAT-Datei aus?
- 19. Wie führe ich PHP's eingebauten Webserver im Hintergrund aus?
- 20. Wie führe ich die Hauptklasse im Testordner aus?
- 21. PHP nicht aus anderen Verzeichnis arbeiten
- 22. Wie führe ich Python Library Module als Skript aus einer anderen Python-Datei aus? (Python 3.5.1)
- 23. Wie führe ich TopoJSON aus?
- 24. Führen Sie eine EXE aus einem anderen Verzeichnis aus?
- 25. Ich führe eine * angeschlossene * Bildschirmsitzung asynchron aus
- 26. Wie führe ich ein Python-Skript im Hintergrund aus?
- 27. Wie führe ich eine PHP-Datei von einem anderen Server?
- 28. Wie führe ich eine Funktion von R aus C# aus?
- 29. Wie führe ich einen externen Task (Exec) im Hintergrund aus?
- 30. Wie führe ich eine Select-Anweisung in C# aus einer Access-Datenbank mit einer Variablen aus?
Danke helfen, arbeite ich an diesem Recht jetzt. – user1938464