2014-11-08 4 views
0
내가 페도라, 파이썬 2.7과의 gedit를 실행하고 간단한 글자 수의 함수가 될해야하는지에 이상한 오류 받고 있어요

:추가 문자 (페도라, gedit를)

def charCount(text): 
     text.seek(0) 
     # read the whole file as one string 
     full_string = text.read() 
     char_count = len(full_string) 
     # return the count 
     return char_count 

에서이 프로그램 실행 내 맥은 올바른 카운트를 얻었지만 Fedora comp에서는 카운트에서 1을 더 늘렸다. 내 main()은 사용자가 지정한 파일을 읽고이 함수를 호출하는 것입니다. 여분의 캐릭터가 등장하는 아이디어? 감사!

는 (이 여기 내 첫 번째 질문입니다. 죄송하지만 지금은 아무 잘못했다면!) 여기에 그냥 빠른 추측

+0

'wc input_file.txt'을 실행하여 입력 파일의 길이를 확인할 수 있습니까? 귀하의 코드는 Linux에서 저에게 적합합니다. – Tony

+0

안녕하세요. Tony. 문자 "a"(공백이나 줄 바꿈 없음) 만있는 파일의 경우, wc는 "1 1 2"를 반환합니다. 그리고 "-m"으로 실행하면 "2"가 반환됩니다. –

+0

편집자는 물어 보지 않는 경우에도 종종 개행 문자를 추가합니다. 'od -tx1z input_file.txt'를 실행하면 마지막 16 진수는 무엇입니까? '0a'이면 개행 문자가 있습니다. – Tony

답변

0

를 반환합니다.

리눅스 명령 truncate -s $(($(wc -m myfile | cut -d' ' -f1)-1)) myfile을 사용하면 파일 끝에 단일 문자를 없앨 수 있습니다.

0

. 이는 회선 종단에 관한 것일 수 있습니다. 일부 시스템에서는 '\ r \ n'을 사용하고 다른 일부에서는 '\ n'만 사용합니다. 나는 osx가 '\ r'만을 사용한다고 생각한다.

플랫폼에 따라, 렌 그 여부 중 하나를 계산하고 당신이 기대하지 않은 파일의 끝에서 당신은 줄 바꿈이 약간 다른 수를

+0

안녕 Eric. 나는 문자 "a"와 줄 바꿈, 탭 또는 공백이없는 테스트 파일에서 실행 해 보았습니다. 어떤 이유로 든 2를 반환합니다. –

+0

파일의 종료가 일종의 가능성이 높습니다. 각 문자를 루핑하여 문자열 표현으로 변환 한 다음 인쇄하십시오. – Eric