파이썬 디렉토리 관련 문제인데 도와주세요..

test.csv

	No, TaxNumber, Amount
	1,100, 200
	2,101, 150
	3,100, 100
	4,102, 100
	5,101, 100
	6,100, 200
        7,103, 100  

이면

a= loadFile(“test.csv”) 한 후의 결과

print(a)
{
'No': ['1', '2', '3', '4', '5', '6', '7'], 
'TaxNumber': ['100', '101', '100', '102', '101', '100', '103'], 
'Amount': [' 200', ' 150', ' 100', ' 100', ' 100', ' 200', ' 100']
}

b = eliminateDuplicate(a, “TaxNumber”, “Amount”)
print(b)
{
'No': ['1', '2', '4', '7'], 
'TaxNumber': ['100', '101', '102', '103'], 
'Amount': [***'500', '250'***, '100', '100']
}

c = diffDict(a, b)
print(c )
{
'No': ['3', '5', '6'], 
'TaxNumber': ['100', '101', '100'], 
'Amount': [' 100', ' 100', ' 200']
}

이렇게 되어야 합니다.

import sys

if(len(sys.argv) != 4):
	print(sys.argv)
	print("python hw2.py fname keyAttr amountAttr")
	exit(0)

fname = sys.argv[1]
keyAttr = sys.argv[2]
amountAttr = sys.argv[3]
headers = []

def	loadFile(fname):
	global headers

	file = open(fname, "r")
	buffer = file.read()
	file.close()
	rows = buffer.split('\n')
	dataDict = {}

	for attr in rows[0].split(','):
		attr = attr.strip()
		dataDict[attr] = []
		headers.append(attr)

	for i in range(1, len(rows)):
		attrs = rows[i].split(',')
		if(len(attrs) != len(headers)):
			continue

		for j in range(0, len(attrs)):
			dataDict[headers[j]].append(attrs[j])

	return dataDict

def	saveFile(fname, dataDict):
    global headers

    f = open(fname, "w")
    f.write(",".join(headers)+"\n")

    for i in range(0, len(dataDict[headers[0]])):
        f.write(",".join(dataDict[headers[i]])+"\n")
    f.close()

def	eliminateDuplicate(dataDict, keyAttr, amountAttr):
    global headers

    a = {}
    for key in dataDict.keys():
        a[key] = []

    for i in dataDict:
        key = dataDict[i]
        a[key].append(i)

    uniqueDict = {}

    for key in headers:
        uniqueDict[key] = []

    for key in a.keys():
        uniqueDict[key].append(dataDict[a[key][0]])
        if (len(a[key]) == 1):
            continue
        amount = 0

        for index in a[key]:
            amount += dataDict[index]

        uniqueDict[key] = amount

    # keyAttr값이 유일하도록 중복을 제거하여야 합니다.

    # keyAttr이 중복된 경우 amountAttr의 모든 값을 더하여 첫번째 row에 저장하고

    # 나머지 row들은 제거합니다.

	# 최종적으로 남은 row들을 이용하여 uniqueDict 딕셔너리를 만들어 리턴합니다.

    return uniqueDict

def	diffDict(dict1, dict2, keyAttr):
	global headers

	diff = {}
	for header in headers:
		diff[header] = []

	keys2 = dict2[keyAttr]

	for i in range(0, len(dict1[keyAttr])):
		value = dict1[keyAttr][i]
		if(value in keys2):
			continue 

		for header in headers:
			diff[header].append(dict1[header][i])

	return diff

originalDict = loadFile(fname)
uniqueDict = eliminateDuplicate(originalDict, keyAttr, amountAttr)
removedDict = diffDict(originalDict, uniqueDict, "No")

print(originalDict)
print(uniqueDict)
print(removedDict)

saveFile("unique.csv", uniqueDict)
saveFile("removed.csv", removedDict)

코드를 이렇게 짜 보았는데 list out of range 오류가 뜨네요… 어디가 범위를 벗어난지도 모르겠고
혹시 도움을 받을 수 있을까요 ? ㅜㅜ

import sys

if(len(sys.argv) != 4):
        print(sys.argv)
        print("python hw2.py fname keyAttr amountAttr")
        exit(0)

fname = sys.argv[1]
keyAttr = sys.argv[2]
amountAttr = sys.argv[3]

headers = []

def loadFile(fname):
        global headers
        file = open(fname, "r")
        buffer = file.read()
        file.close()
        rows = buffer.replace(' ', '').replace('\t', '').split('\n')
        dataDict = {}
        for attr in rows[0].split(','):
                attr = attr.strip()
                dataDict[attr] = []
                headers.append(attr)
        for i in range(1, len(rows)):
                attrs = rows[i].split(',')
                if(len(attrs) != len(headers)):
                        continue
                for j in range(0, len(attrs)):
                        dataDict[headers[j]].append(attrs[j])
        return dataDict

def saveFile(fname, dataDict):
    global headers
    f = open(fname, "w")
    f.write(",".join(headers)+"\n")
    for i in range(0, len(dataDict[headers[0]])):
        f.write(dataDict[headers[0]][i] + "," + dataDict[keyAttr][i] + "," + dataDict[amountAttr][i] + "\n")
    f.close()

originalDict = loadFile(fname)
uniqueDict = {}
removedDict = {}

for k in headers:
    uniqueDict[k] = []
    removedDict[k] = []

for idx, i in enumerate(originalDict[keyAttr]):
    if i not in uniqueDict[keyAttr]:
        uniqueDict[headers[0]].append(originalDict[headers[0]][idx])
        uniqueDict[keyAttr].append(i)
        uniqueDict[amountAttr].append(originalDict[amountAttr][idx])
    else:
        removedDict[headers[0]].append(originalDict[headers[0]][idx])
        removedDict[keyAttr].append(i)
        removedDict[amountAttr].append(originalDict[amountAttr][idx])
        uniqueDict[amountAttr][uniqueDict[keyAttr].index(i)] = str(int(uniqueDict[amountAttr][uniqueDict[keyAttr].index(i)]) + int(originalDict[amountAttr][idx]))

print(originalDict)
print(uniqueDict)
print(removedDict)

saveFile("unique.csv", uniqueDict)
saveFile("removed.csv", removedDict)

디렉토리 ( Directory ) 관련 문제가 아니라 딕셔너리 ( Dictionary ) 관련 문제 입니다. 답변드린 코드는 이동 중에 버스 안에서 작성해서 돌려보지는 못했지만 아마 잘 작동 할겁니다. 그대로 사용하시면 됩니다.