2014-12-09 2 views
0

작은 파이썬 스크립트를 사용하여 작업 속도를 높이고 작은 스크립트 작업을 수행하려고합니다.하지만 원하는대로 작동하지 않습니다. 여기에 현재 코드는 다음과 같습니다CSV 코드가 루핑되지 않습니다.

import re 
import csv 
#import pdb 

#pdb.set_trace() 

# Variables 
newStock = "newStock.csv" #csv file with list of new stock 
allActive = "allActive.csv" #csv file with list of all active 
skusToCheck= [] 
totalNewProducts = 0 
i = 0 

# Program Start - Open first csv 
a = open(newStock) 
csv_f = csv.reader(a) 

# Copy each row into array thingy 
for row in csv_f: 
     skusToCheck.append(row[0]) 

# Get length of array 
totalNewProducts = len(skusToCheck) 

# Open second csv 
b = open(allActive) 
csv_f = csv.reader(b) 

# Open blank csv file to write to 
csvWriter = csv.writer(open('writeToMe.csv', 'w'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) 

# Check first value in first row,first file against each entry in 2nd row in second file 
with open(allActive, 'rt') as b: 
     reader = csv.reader(b, delimiter=",") 
     for row in reader: 
       if skusToCheck[i] == row[1]: 
         print(skusToCheck[i]) # output to screen for debugging 
         print(row) # debugging 
         csvWriter.writerow(row) #write matching row to new file 
         i += 1 # increment where we are in the first file 

의사 코드는 다음과 같습니다

  1. 파일 열기 하나와 파일이
  2. 에 열 2 skusToCheck
  3. 체크 값에 대해이 값을 열 하나에서 모든 값을 저장
  4. 일치하는 항목을 찾으면 (이 작업을 수행하면 부분 일치도 찾습니다.) 파일 3에 행을 복사하십시오.
  5. 의 다음 값으로 이동하지 않으면및 반복

나는 33-40 줄을 루프로 만들 수 없다. 첫 번째 값을 확인하고 두 번째 파일에서 일치 항목을 찾지 만 다음 값인 skusToCheck으로 이동하지 않습니다.

+0

당신은 다시 설정해야 할 경우 각각의 단일 sku가 ALLACTIVE의 행의 모든 ​​일치되는이 검사를, 즉 jonrsharpe 최초의 코멘트에서 힌트를 따라

# Check first value in first row,first file against each entry in 2nd row in second file with open(allActive, 'rt') as b: reader = csv.reader(b, delimiter=",") for row in reader: if len(row)>1: for sku in skusToCheck: if sku == row[1]: print(sku) # output to screen for debugging print(row) # debugging csvWriter.writerow(row) #write matching row to new file break 

에 while 루프를 수정해야 'while' loop * 내에서'i = 0' * 또는 더 나은 방법은 skusToCheck :'에서 sku를 사용하는 것입니다. – jonrsharpe

+0

루프를 다시 초기화하면 어떻게 그 위치를 추적 할 수 있습니까? 내가 프로그램을 사용하여 어디 배열을 추적 할 수 있습니다. – Izz

+0

당신은 분명히 할 수 있습니다 - 당신은 모든 라인에 대해 모든 SKU를 확인 하시겠습니까, 아니면 파일에서와 같은 순서로 나타나는 것들만 확인 하시겠습니까? 그리고 "* 그것이 어디에 있느냐"*라는 것을 당신은 무엇을 의미합니까? (죄송합니다, 그건'for' 루프를 읽었어야합니다.) – jonrsharpe

답변

0

당신은

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 제공 한 코드는 skusToCheck의 첫 번째 항목에서만 작동하는 것 같습니다. 확인해야 할 skus는 csv로 열에 저장됩니다. 이것이 코드에 영향을 미칠 수 있습니까? – Izz

+0

사실, 나는 멍청이였다. 코드가 올바른 위치에 있습니다. 감사. – Izz

관련 문제