2016-04-05 2 views
0

До сих пор у меня есть структура, как это на вершине все мои файлы (я обрабатывать исходные данные и сделать анализ с пандами так я работаю с большим количеством исходных данных):Создание файла для поиска путей и имен файлов?

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/' 

Там представляют собой множество разных путей, а некоторые .py-файлы используют одно и то же имя пути, чтобы ссылаться на другой путь (например, raw_location является источником данных, который отличается для разных файлов). Это стало беспорядком.

Под местоположениями у меня есть список имен файлов (import_filename, modified_filename, dashboard_filename). Все сказанное, я трачу, как 10 + строк кода на каждый файл, просто для указания имен переменных. Я знаю, что должен быть лучший способ сделать это.

До сих пор я переносил свои .py и .ipynb файлы в папки в основном каталоге, что означает, что я могу использовать относительные пути, такие как «../raw», которые помогли. Могу ли я создать файл, в котором есть все пути и переменные имени файла внутри него, а затем прочитать, что вместо перечисления путей в верхней части моего кода? Какая здесь самая лучшая практика?

+2

Вы должны написать файл конфигурации, где вы положили всю информацию, –

+2

магазин путей в словаре, который сохраняется в виде файла в формате JSON? Трудно понять, что намерение здесь; возможно, полная перезапись скриптов решит эти проблемы в этом процессе. – jDo

+0

Ну, я мог бы переписать. Тем не менее, я спрашиваю о некоторых лучших практиках. Я замечаю, что я не вижу кучу явных путей, когда смотрю на код других людей, но я не знаю, как лучше всего это избежать. Я перешел из Excel в pandas/python, поэтому постепенно становлюсь более эффективным и организованным. – trench

ответ

0

Edit: После просмотра комментариев ниже, и изучение этого вопроса глубже - я добавил два дополнительных варианта:

1) Используйте питона "ConfigParser" - https://docs.python.org/2/library/configparser.html

Примеры: https://stackoverflow.com/a/29479549/5088142

2) Как упоминалось в BlackJack - можно удалить «класс» из импортированного файла Вы можете написать файл конфигурации, например названы: 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/' 

в файлах, вы будете импортировать этот класс из этого файла LDconfig.py с помощью:

import LDconfig 

В файлах вы можете получить доступ к данным с помощью: importedmodule. переменная, например

LDconfig.raw_location 

3) Вы можете написать конфигурационный файл, например названы: LDconfig.py с классом

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/' 

в файлах, вы будете импортировать этот класс из этого LDconfig.py файла с помощью:

from LDconfig import LDconfig 

В файлах вы можете получить доступ к данным с помощью: classname.variable, например

LDconfig.raw_location 
+0

круто, это сработало.Это лучший выбор по сравнению с созданием текстового файла или чего-то еще? – trench

+1

Я не вижу смысла в классе. Сам модуль уже является пространством имен, поэтому, если вы оставите класс, вы можете просто «импортировать LDconfig» и получить доступ к данным с помощью «LDconfig.raw_location». Это именно то, что делают такие программы, как Django или Sphinx. – BlackJack

+1

@LanceDacey Если лучше написать модуль, а не файл INI или JSON, это зависит. Преимущество модуля состоит в том, чтобы весь язык Python определял и манипулировал значениями. «Немой» файл конфигурации имеет то преимущество, что он «безопасен» (не может содержать вредоносный код), и его можно манипулировать с другими программами, возможно, на других языках, кроме Python. – BlackJack

Смежные вопросы