2016-04-13 36 views
0

Birden çok python komut dosyasında kullanılacak bir metin dosyasından stok adlarını ayıklamak istediğim bir sorunla uğraşıyorum, böylece bir veya daha fazla stok eklersem Tüm python dosyalarını değiştirmem gerekmiyor.Bir python dosyasında değişken olarak kullanmak üzere txt dosyasından bilgi alma

Benim stocks.txt dosyasıdır:

AAPL 
GOOG 
TSLA 

Bu senaryo vb a.txt, a.txt, P.txt, L.txt, G.txt kaydeder içe aktarırsanız

Her harfi ayrı olarak alır. Kodumu AAPL, GOOG ve TSLA alması için nasıl değiştirebilirim?

Teşekkür ederiz!

Benim azaltılmış komut dosyası:

import urllib2 
import time 
import datetime 
import os 

filePath = os.path.abspath('stocks.txt') 
openFile = open(filePath, 'r') 
stockToPull = str(openFile.read()) 

def pullData(stock): 
    try: 
     saveFileLine = "today_data\\" +stock+".txt" 

    except Exception, e: 
     print 'main loop', str(e) 

while True: 
    for eachStock in stockToPull: 
     pullData(eachStock) 
+1

Bütün modülleri önlemek için çiğ dize kullanabilirsiniz 'str (openFile.read())' ') (openFile.readlines' olur , –

+1

OpenFile.close() 'ı daha sonra unutmayın – jDo

cevap

1

Sorununuz hattını oluşturmak

stockToPull = str(openFile.read()) 

Bu, tek bir dize olarak openFile tüm içeriğini alıyor olduğunu. Eğer tek harfler

bir dizi üreten bir dize, yineleme vardır stockToPull yinelemenize nedenle yerine

stockToPull = openFile.readlines() 

file.readlines() dosyasında bir bütün çizgilerin bir listesini üretir kullanın. Eğer kodu var gibi

  • :

    while True: 
        for eachStock in openFile: 
         pullData(eachStock) 
    

    Diğer bazı ilgisiz eleştirilerin: dosya çok büyükse veya ara değişken istemiyorsanız, siz dosyası üzerinden doğrudan döngü da yapabilirsiniz yazılı, while True: sen n dosyalarından

  • Veriler çoğu zaman fazladan \n veya boşluk karakteri vardır, bu
  • şöyle bir yorumda işaret kaldırmak için pullData(eachStock.strip()) eklemeyi düşünün sonsuz döngü yaratacak dosyayı kapatmak için Açık bir yakın ifade ekleyebilir veya aşağıda gösterildiği gibi bir içerik yöneticisi kullanabilirsiniz.
  • Bu sırf soyunmuş kod olabilir, ama tipik kongre Bu seferki, hep olduğu except Exception as e: olarak çok küçük gördüğüm edilir
  • herhangi idam kodundan önce işlev tanımlarını koymak için (hariç ithalat) ise şey daha okunabilir
  • Dosya yolu dizeleri oluşturmak için os.path.join() kullanın. Alternatif burada \\

gerek birlikte basit bir değişimdir

import urllib2 
import time 
import datetime 
import os 

def pullData(stock): 
    try: 
     saveFileLine = os.path.join("today_data", stock+".txt") 
    except Exception as e: 
     print 'main loop', str(e) 

filePath = os.path.abspath('stocks.txt') 
with open(filePath, 'r') as openFile: 
    for eachStock in openFile: 
     pullData(eachStock.strip()) 
+0

Çok teşekkür ederim! Bir çekicilik gibi çalışır :) – Rico

+0

@Rico, bunu duyduğuma sevindim. Bu cevap sorununuzu çözdüğünden, lütfen "kabul edilmiş" olarak işaretleyin – wnnmaw

+0

Bitti! Teşekkür ederim :) – Rico

İlgili konular