2016-04-05 8 views
0

Bisher habe ich eine Struktur wie diese auf der Spitze aller meiner Dateien (I Rohdaten verarbeiten und mit Pandas Analyse tun so mit einer Menge von Rohdaten Ich arbeite):Erstellen einer Datei zum Suchen von Pfaden und Dateinamen?

raw_location = 'C:/Users/OneDrive/raw/' 
output_location = 'C:/Users/OneDrive/output/' 
mtd_location = 'C:/Users/OneDrive/modified/' 
py_location = 'C:/Users/OneDrive/py_files/' 

Es Es gibt eine Menge verschiedener Pfade und einige .py-Dateien verwenden denselben Pfadnamen, um auf einen anderen Pfad zu verweisen (z. B. ist raw_location die Quelle der Daten, die für verschiedene Dateien unterschiedlich sind). Es ist ein Durcheinander geworden.

Unter den Standorten habe ich eine Liste von Dateinamen (import_filename, modifizierte_Dateiname, Dashboard_Dateiname). Alles in allem verschwende ich mehr als 10 Zeilen Code in jeder Datei, nur um Variablennamen anzugeben. Ich weiß, dass es einen besseren Weg dafür geben muss.

Bis jetzt habe ich meine .py und .ipynb Dateien in Ordner innerhalb des Hauptverzeichnisses verschoben, was bedeutet, dass ich relative Pfade wie '../raw' verwenden kann, was geholfen hat. Kann ich eine Datei erstellen, in der alle Pfade und Dateinamenvariablen enthalten sind, und diese dann lesen, anstatt die Pfade oben in meinem Code aufzulisten? Was ist die beste Vorgehensweise hier?

+2

Sie sollten eine Konfigurationsdatei schreiben, in dem Sie alle Informationen –

+2

Speichern Sie die Pfade in einem Wörterbuch setzen, die als JSON-Datei gespeichert wird? Es ist schwer zu wissen, was die Absicht hier ist; Vielleicht würde ein vollständiges Neuschreiben der Skripte diese Probleme in diesem Prozess lösen. – jDo

+0

Nun, ich könnte umschreiben. Ich frage jedoch nach einigen Best Practices, die zu befolgen sind. Ich merke, dass ich nicht viele explizite Pfade sehe, wenn ich auf den Code anderer Leute schaue, aber ich kenne nicht den besten Weg, dies zu vermeiden. Ich ging von Excel zu Pandas/Python, so dass ich nur langsam effizienter und organisierter werde. – trench

Antwort

0

Edit: Nach den Kommentaren unten zu überprüfen und um dieses Problem zu lernen tiefer - ich habe zwei weitere Optionen hinzugefügt:

1) Verwenden Sie Python "ConfigParser" - https://docs.python.org/2/library/configparser.html

Beispiele: https://stackoverflow.com/a/29479549/5088142

2) Wie BlackJack erwähnt - man kann die "Klasse" aus der importierten Datei entfernen Sie können Konfigurationsdatei schreiben, zB

import LDconfig 

In Ihrer Dateien die Daten zugreifen können: genannt: mit LDconfig.py

raw_location = 'C:/Users/OneDrive/raw/' 
output_location = 'C:/Users/OneDrive/output/' 
mtd_location = 'C:/Users/OneDrive/modified/' 
py_location = 'C:/Users/OneDrive/py_files/' 

in Ihre Dateien, werden Sie diese Klasse von dieser LDconfig.py Datei importieren importedmodule. Variable, z

LDconfig.raw_location 

3) Sie Konfigurationsdatei schreiben kann, z.B. genannt: LDconfig.py mit Klasse

class LDconfig: 
    raw_location = 'C:/Users/OneDrive/raw/' 
    output_location = 'C:/Users/OneDrive/output/' 
    mtd_location = 'C:/Users/OneDrive/modified/' 
    py_location = 'C:/Users/OneDrive/py_files/' 

in Ihren Dateien, werden Sie diese Klasse von dieser LDconfig.py Datei importieren mit:

from LDconfig import LDconfig 

In Ihren Dateien können Sie auf die Daten zugreifen mit: Klassenname.Variable, z

LDconfig.raw_location 
+0

cool, das hat funktioniert.Ist das eine bessere Wahl im Vergleich zum Erstellen einer Textdatei oder etwas? – trench

+1

Ich sehe nicht den Sinn der Klasse. Das Modul selbst ist bereits ein Namespace. Wenn Sie die Klasse weglassen, können Sie einfach "LDconfig" importieren und auf die Daten mit "LDconfig.raw_location" zugreifen. Was genau Programme wie Django oder Sphinx tun. – BlackJack

+1

@LanceDacey Wenn es besser ist, ein Modul anstelle einer INI- oder JSON-Datei zu schreiben, hängt davon ab. Ein Modul hat den Vorteil, dass die gesamte Python-Sprache Werte definiert und manipuliert. Eine "dumme" Konfigurationsdatei hat den Vorteil, "sicher" zu sein (kann keinen schädlichen Code enthalten) und kann mit anderen Programmen manipuliert werden, möglicherweise in anderen Sprachen als Python. – BlackJack

Verwandte Themen