2017-05-05 1 views
2
handle = open('full path/file name.txt') 

file = handle.read() 
print file 

for line in handle: 
    print line 
  1. 인쇄 파일 올바르게 인쇄
  2. 인쇄 라인은 아무것도 반환하지 않습니다. 오류도보고되지 않았습니다. 여기서 내가 뭘 잘못하고 있니?
+4

을 위해 일해야 .read' 파일 당신 ' 이미 끝에 있기 때문에'handle'에 더 이상'line'이 없습니다. – jonrsharpe

답변

0

읽기 데이터에서 쓰는 것이 필요합니다. 핸들은 파일 객체입니다. 당신이 파일을 읽을되면

for line in file: 
    print(line) 
+0

이것은 각 줄이 아닌 각 * 문자를 줄 것입니다. o 트리플 - 백틱 코드 펜싱은 GitHub-flavor markdown을위한 것으로 SO가 지원하지 않습니다. – jonrsharpe

+0

file = handle.readlines() ... 나는 사람 코드를 완전히 읽지 못했습니다. 좋은 캐치 –

1

은 (handle.read()) 파일은 끝에 도달하고, 그것을 다시 반복 할 때 이렇게, 그것은 더 이상 제공 아무 상관이 없습니다.

handle.seek(0) 
0

을 : 다시 그 내용을 사용하여 사용하려는 경우

, 당신이 찾는 첫 번째 읽기에 저장하고 저장된 내용을 매번 사용하거나 사용하여 파일의 시작 부분으로 재설정 할 수 있습니다 첫 번째로 주목해야 할 점은 for 루프가 지금 당장은 당신이 찾고있는 행동을 얻지 못한다는 것입니다. .read() 대신 file = handle.readlines()이 필요합니다. 그렇지 않으면, 각 행 대신에 새로운 행에 각.자를 인쇄합니다. (그 목록을 handle.readlines()이 목록을 반환합니다, 그래서 인쇄 (파일) 라인은 이제 인쇄 할 것이다. 그에서 인쇄 할 수

참고 또한이 .read()을 사용하여 파일에서 읽은 후, 당신은 handle.seek(0)을 실행해야 그렇지 않으면 당신은 더 출력을받을 수 없습니다로 '독자'로, 다시 파일은 파일의 끝 부분에 있습니다. 코드 아래

+1

* "대신 파일에서 읽어야합니다."* - 아니요, 이름에도 불구하고 파일이 아니기 때문에 * content *가 문자열입니다. 파일 핸들을 반복 할 수 있습니다. – jonrsharpe

+0

사실입니다. 편집 됨, 감사합니다! – Windmill

0

`후 2.7

handle = open('full path/file name.txt') file = handle.read() 
handle.seek(0) print file 

for line in handle: 
    print line