2010-03-10 4 views
0

저장할 루프 이름에서 파일 이름을 생성하여 루프에서이 작업을 수행 할 수 있습니까?파이썬에서 배열 변수를 얻으십시오

ab = array.array('B', map(operator.xor, a, b)) 
f1 = open('ab', 'wb') 
ab.tofile(f1) 
f1.close 
ac = array.array('B', map(operator.xor, a, c)) 
f1 = open('ac', 'wb') 
ac.tofile(f1) 
f1.close 
ad = array.array('B', map(operator.xor, a, d)) 
f1 = open('ad', 'wb') 
ad.tofile(f1) 
f1.close 
ae = array.array('B', map(operator.xor, a, e)) 
f1 = open('ae', 'wb') 
ae.tofile(f1) 
f1.close 
af = array.array('B', map(operator.xor, a, f)) 
f1 = open('af', 'wb') 
af.tofile(f1) 
f1.close 

도움 주셔서 감사합니다!

답변

1

한 가지 방법은 DICT에서 f를, A, B, C, D, E를하는 것입니다 작동합니다. 그러면 다음과 같이하면됩니다 :

for x in 'bcdef': 
    t = array.array('B', map(operator.xor, mydict['a'], mydict[x])) 
    f1 = open(''.join('a',x),'wb') 
    t.tofile(f1) 
    f1.close() 
+0

그들은 dict에있다. * locals() *라고 불린다. –

+1

@Ian 네, 그렇지만 일부 사람들은 해킹 같은 것이기 때문에 그것을 사용하는 것을 좋아하지 않습니다. –

+0

감사합니다! a, b, c, d, e, f도 배열 인 경우 수행합니까? – lclevy

2

이유에 따라 모든 중간 배열을 저장한다고 가정합니다. 이 같은

A={} 
for v,x in zip((b,c,d,e,f),'bcdef'): 
    fname = 'a'+x 
    A[fname] = (array.array('B', map(operator.xor, a, v))) 
    f1 = open(fname, 'wb') 
    A[fname].tofile(f1) 
    f1.close 

또는 뭔가 너무

A={} 
for x in 'bcdef': 
    fname = 'a'+x 
    A[fname] = (array.array('B', map(a.__xor__, vars()[x]))) 
    f1 = open(fname, 'wb') 
    A[fname].tofile(f1) 
    f1.close 
+1

'map (operator.xor, a, b)'를 반복적으로 계산하지 않습니까? –

+0

@ 마크 디킨슨, 그렇습니다. 나는 그것을 지금 고쳤다 :) –