2017-01-02 1 views
0

나는 파일의 끝까지 한 줄의 쓰레드를 만들고, 파일의 시작부터 다른 쓰레드를 읽길 바랬다. 읽은 내용을 삭제하십시오. 프로그램이 끝나면 중단 된 부분을 선택할 수 있도록 파일에 있어야합니다. 문제는 첫 번째 줄을 삭제 한 다음 파일을 새로 고치는 방법을 모르겠다는 것입니다.파이썬 하나의 쓰레드는 파일의 끝 부분에 쓰고 다른 쓰레드는 파일의 처음부터 읽는다.

+0

시도한 코드를 추가하십시오. –

답변

1

파일이 그렇게 작동하지 않습니다. 파일을 읽거나 쓸 수는 있지만 파일에서 첫 번째 행을 쉽게 삭제할 수는 없습니다. 파일의 시작 부분으로 가서 두 번째 및 이후 줄의 데이터로 덮어 쓰고 마지막에 잘라냅니다.

더 나은 대안은 모듈의 행 목록을 유지하는 것입니다. 해당 모듈에서 두 개의 함수를 정의하십시오.

  • 목록의 끝에 행을 추가하려면 (append 메서드 사용) 하나.
  • 두 번째는 목록 시작 부분에서 줄을 제거하고 (0을 인수로 사용하여 pop 메서드를 사용하여) 줄을 반환합니다.

파일의 writelines 방법을 사용하여 목록을 파일에 쓰려면 세 번째 기능을 추가해야합니다. 원하는 경우이 함수를 다른 함수 모두에서 호출하여 목록이 변경 될 때마다 파일에 기록되도록 할 수 있습니다. 마지막으로 파일에서 행 목록을로드하는 기능이 있어야합니다.

멀티 스레드 프로그램에서 이것을 사용하려면이 모듈은 한 번에 하나의 스레드 만 목록을 수정할 수 있도록 threading.Lock을 사용해야합니다.