2016-04-05 19 views
0

Şimdiye kadar benim tüm dosyaların üzerine böyle bir yapıya sahip (ben ham veri işlemek ve bu yüzden ham verilere bir çok ile çalışıyorum pandalar ile analiz yapmak): OradaArama yollarına ve dosya adlarına dosya oluşturma?

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

Farklı yollar bir gruptur ve bazı .py dosyaları farklı bir yola başvurmak için aynı yol adını kullanır (örneğin, raw_location, farklı dosyalar için farklı olan verilerin kaynağıdır). Bu bir karışıklık oldu.

Konumların altında bir dosya adları listesi (import_filename, modified_filename, dashboard_filename) var. Tüm söyledim, sadece değişken isimleri belirtmek için her dosyada 10+ satır kod harcıyorum. Bunu yapmanın daha iyi bir yolu olmalı biliyorum.

Şimdiye kadar .py ve .ipynb dosyalarını ana dizindeki klasörlere taşıdım. Bu da, yardımcı olan '../raw' gibi göreceli yolları kullanabileceğim anlamına geliyor. İçindeki tüm yol ve dosya adı değişkenlerine sahip bir dosya oluşturabilir ve ardından kodumun üstündeki yolları listelemek yerine okuyabilir miyim? Burada en iyi uygulama nedir?

+2

Sen tüm bilgilerin –

+2

Store'u bir json dosyası olarak kaydedilmiş bir sözlükte yolları koymak bir yapılandırma dosyası, yazmalıyım? Niyetin burada ne olduğunu bilmek zor; Belki de senaryoların tam bir yeniden yazımı bu sorunları bu süreçte çözecektir. – jDo

+0

Eh, yeniden yazabilirim. Ancak, takip edeceğim en iyi uygulamalardan bahsediyorum. Diğer insanların kodlarına baktığımda bir grup açık yol göremediğimi fark ettim ama bundan kaçınmanın en iyi yolunu bilmiyorum. Excel'den panda/python'a gittim, bu yüzden yavaş yavaş daha verimli ve düzenli hale geliyorum. Çalışanlar, – trench

cevap

0

Düzenleme: Aşağıdaki yorumları incelemeyi ve daha derin bu konuyu öğrendikten sonra - Ben iki ek seçenekler ekledik: -: https://stackoverflow.com/a/29479549/5088142

https://docs.python.org/2/library/configparser.html

Örnekler

1) piton kullan "ConfigParser" 2) BlackJack'in bahsettiği gibi - birisi ithal edilen dosyadan "class" ı kaldırabilir. Konfigürasyon dosyası yazabilirsiniz, örn. adlı: LDconfig.py Dosyalarınızda

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

, kullandığınız bu LDconfig.py dosyasından bu sınıfı ithal edecek:

import LDconfig 

dosyalarınızı size kullanarak verilere erişebilir: importedmodule. değişken Sen yapılandırma dosyasını, mesela yazabilir

LDconfig.raw_location 

3) adlı: LDconfig.py sınıfla Dosyalarınızda

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

, kullandığınız bu LDconfig.py dosyasından bu sınıfı ithal edecek:

from LDconfig import LDconfig 

dosyalarınızı size kullanarak verilere erişebilir: classname.variable, örneğin

LDconfig.raw_location 
+0

.Bu bir metin dosyası veya bir şey oluştururken karşılaştırıldığında daha iyi bir seçim mi? – trench

+1

Sınıfın noktasını göremiyorum. Modülün kendisi zaten bir isim-alanıdır, bu yüzden eğer dersten çıkarsanız sadece 'LDconfig'i içe aktarabilir ve' LDconfig.raw_location 'ile veriye erişebilirsiniz. Django veya Sfenks gibi programlar tam olarak ne yapar. – BlackJack

+1

@LanceDacey Bir INI veya JSON dosyası yerine bir modül yazmak daha iyidir. Bir modül, değerleri tanımlamak ve değiştirmek için tüm Python diline sahip olma avantajına sahiptir. Bir “aptal” konfigürasyon dosyası “güvenli” olma (kötü niyetli kod içeremez) avantajına sahiptir ve diğer programlarla, muhtemelen Python'dan başka dillerde de kullanılabilir. – BlackJack

İlgili konular