2014-02-07 2 views
-1

다음은 제 파일 목록입니다. 각 파일은 쓰기 가능한 모드로 열리고 텍스트로 압축됩니다. 목표는 각 텍스트를 압축 된 파일로 전송하는 것입니다.파이썬에서 파일 목록에 텍스트를 붙여 넣는 방법

file_list=[(<open file 'x', mode 'w' at 0x028F5758>, 'hi friend'), (<open file 'x', mode 'w' at 0x02943020>, 'whats your name?'), (<open file 'x', mode 'w' at 0x02943078>, 'you welcome')] 

내 시도 :

paste_texts=[x[0].write(x[1]) for x in file_list] 
print [open('x', 'r').read() for x in paste_texts] 

출력 :

['', '', ''] 

내가 내 C 드라이브에있는 파일을 확인하고 비어와 그대로였다. 인접한 파일로 각 텍스트를 전송하는 방법에 대한 제안?

+0

있다. –

+0

변경 사항을 디스크에 커밋하려면 파일 객체를'.close()'또는'.flush()'해야 할 수도 있습니다. – senshin

+0

안녕 Senshin, 나는 게시하기 전에 닫으려고했지만이 오류 메시지가 나타납니다. AttributeError : 'NoneType'개체에 'close'속성이 없습니다. – Tiger1

답변

1

목록 이해를 사용하는 것이 이치에 맞지 않습니다.

를 사용하여 간단한 for 루프 :

file_names = 'hi_file.txt', 'name_file.txt', 'welcome_file.txt' 
my_strings = 'hi friend', 'whats your name', 'you welcome' 

for (text, fname) in zip(my_strings, file_names): 
    with open(fname, 'w') as f: 
     f.write(text) 

편집 (주석 참조) : 첫 번째 줄이 유효 파이썬하지

for (text, f) in zip(my_strings, file_list): 
    f.write(text) 
+0

안녕하세요, 데이터 세트가 방대하고 저에게 그 방법으로 제시되었습니다 (텍스트로 압축 된 파일). 목록의 이해가 가장 좋은 방법이라고 생각했습니다. – Tiger1

+0

예제가 유효한 파이썬 코드가 아니기 때문에 입력 형식이 정확히 무엇입니까? 문자열로 압축 된 파일 핸들 목록 일 경우 목록을 반복하고 쓰기 만하면 루프는 내 대답과 같은 형식이됩니다. – wim

+0

파일이 이미 열렸습니다. 그 이유는 목록이 유효한 코드가 아닌 이유입니다. [<열린 파일 'x', 'w'가 0x02B730D0>, <열린 파일 'x' 0x02B73128>, <열린 파일 'x', 0x02B73180> ' – Tiger1

관련 문제