2012-09-03 6 views
0

"Zed Shaw의 Learn Python The Hard Way; 운동 15에 대한 "추가 크레딧"은 pydoc 파일을 통해 파일을 읽을 수있는 다른 것들을 읽도록 지시합니다. 나는 "read()"를 사용하여 터미널이 특정 바이트 수의 텍스트 파일을 출력하는 방법을 알아내는 것에 관심이 있었다. 얼마나 많은 바이트를 읽어야할지에 대한 논쟁에서 하드 코드를 작성할 수 있지만, 사용자에게 바이트 수를 정의하라는 메시지를 표시하려고 할 때 벽을 쳤다. 나는의 번호를 입력하는 스크립트의 사용자에게 메시지를 어떻게raw_input을 통해 read() 할 바이트 수를 전달하려고 시도합니다.

"NameError: name 'how_far2' is not defined" 

:

from sys import argv 

    script, filename = argv 

    txt = open(filename) 

    print "Here's 24 bytes of your file %r:" % filename 

    print txt.read(24) 

    print """What about an arbitrary, not hard-coded number of bytes? Enter the number 
    of bytes you want read out of the txt file at this prompt, as an integer:""" 

    how_far = raw_input("> ") 

    print txt.read(how_far2) # this format makes sense in my head but obviously isn't the done thing. 

단말기가 오류를 뱉어 : 내가 지금까지 그것을 가지고 여기

스크립트입니다 바이트를 읽고 스크립트가 해당 바이트 수를 읽도록합니까?

보너스 질문 :

  1. 내가 여기서 뭘하려고 뭘하는지에 대한 실제-사실 용어는 무엇입니까? 변수를 메소드에 전달 하시겠습니까? 변수를 함수에 전달 하시겠습니까?
  2. 바이트 수는 입니까? 그게 정확한 용어입니까?
  3. 더 일반적으로, 파이썬 용어의 어휘 목록을 얻는 좋은 곳이 무엇입니까? 다른 모든 도서를 스택 오버플로, 또는 어딘가에 온라인 설명서에서 일부를 권 해드립니다? 실제로 아무런 가정을하지 않고, 사전 지식없이, "나에게 나에게 5 단계 수준의 설명을 해줍니다 ... 웹 검색의 30 분이 너무 도움이되지 않았습니다. 웹 검색을 위해 많은 노력을 기울 였음에도 불구하고 실제로 어떤 한 곳으로 모인 전문 용어를 찾지 못했습니다.
+0

[공식 Python 튜토리얼] (http://docs.python.org/tutorial/) –

+0

"어휘를 구하는 가장 확실한 장소 Python 용어 목록 "은 표준 문서 집합의 일부인 [Python 언어 참조] (http://docs.python.org/reference/)입니다. 상당히 기술적 인 문서이지만 최소한 사용 된 용어를 제공합니다. 상위 레벨의 모든 것을 설명하는 [표준 라이브러리] (http://docs.python.org/library/) 설명서를 사용하여이를 보완 할 수 있습니다. –

답변

0

raw_input은 문자열을 반환합니다. file.read은 정수를 필요로합니다. 사용하기 전에 raw_input의 출력을 정수로 변환하면됩니다.

2

오류 메시지는 how_far을 한 위치에 사용하고 how_far2을 다른 위치에 사용했기 때문에 발생합니다.

또한 읽기를 통과하기 전에 inthow_far을 변환해야합니다 -

예를

에 대한 int(how_far)를 사용하여 당신이 변수, 매개 변수 또는 인수를 전달 호출 할 수 있습니다. 이것은 파이썬 용어가 아니며 일반적인 프로그래밍 용어입니다

+0

그게'NameError'에 대한 설명입니다,하지만 OP가 두 곳에서'how_far'를 사용하더라도 여전히 오류가 있습니다. – mgilson

+0

@mgilson, 맞습니다. 그러나 배우고있을 때, 파이썬이 불평하는 오류를 고치는 것이 가장 좋습니다. 다음 에러는'TypeError : 정수가 필요합니다'('read()'에 대해) –

관련 문제