2012-12-27 2 views
2

저는 방금 Python으로 여행하기 시작했습니다. 내 오토바이에서 밸브 틈새를 할 때 shim 크기를 계산할 작은 프로그램을 만들고 싶습니다. 목표 클리어런스가있는 파일을 갖게되며 사용자에게 현재 심 크기 및 현재 클리어런스를 입력하도록 쿼리합니다. 그러면 프로그램은 목표 심 크기를 뱉어 낼 것입니다. 충분히, 내가 그것을 수행하는 스프레드 시트를 구축 간단한 보이는,하지만 난 파이썬을 배우고 싶다, 이것은 지금까지 내가이 있고, txt 파일에서 데이터 가져 오기

... 어쨌든, 충분히 간단한 프로젝트처럼 보인다 :

def print_target_exhaust(f): 
    print f.read() 

#current_file = open("clearances.txt") 
print print_target_exhaust(open("clearances.txt")) 

이제는 전체 파일을 읽었지만, 예를 들어 4 행과 같은 값만 얻으려면 어떻게해야합니까? 나는이 함수에서 print f.readline(4)을 시도했지만 방금 첫 번째 침을 뱉어 버리는 것 같습니다. 네 자 ... 내가 뭘 잘못 했니?

나는 아주 새로운 편이라!

lines = f.readlines() 

그런 다음, 인쇄 행 4 : 0 파이썬 시작에 인덱스가 그래서는 다섯 번째 줄에서 실제로 것을

print lines[4] 

참고 -d

+0

은 ('f.readlines 시도) [3] '. –

+0

여기에 관련된 실수 : http://stackoverflow.com/questions/13988421/reading-document-lines-to-the-user-python/13988466#13988466 –

답변

4

는 모든 라인을 읽으려면 파일.

+0

Gotcha, 나는 그것을 시도 할 것입니다. 아마도 그 줄에서 값을 가져 와서'value = lines [4]'와 같은 것을 할 것입니다. 대괄호 여야합니까? – Demonic

+0

+1. 그러나'readlines'는 3.3에서 비추천 되었기 때문에'f.readlines()'대신'modern '버전 인'list (f)'를 배울 가치가 있습니다. 그러나, 그 기본의 조금 더 이해가 필요하지 않습니다 ... – abarnert

+0

정확하고 예, 당신은 대괄호가 필요합니다. 'readline' (또는'readlines')에서 반환 된 줄은 개행 문자를 포함하므로'value = lines [4] .strip()'을 사용하고 싶을 것입니다. – bogatron

-1

매우 효율적이지는 않지만 작동 원리를 보여 주어야합니다. 기본적으로 읽는 모든 행에 카운터가 계속 실행됩니다. 줄이 '4'이면 인쇄 할 것입니다.

## Open the file with read only permit 
f = open("clearances.txt", "r") 
counter = 0 
## Read the first line 
line = f.readline() 

## If the file is not empty keep reading line one at a time 
## till the file is empty 
while line: 
    counter = counter + 1 
    if counter == 4 
     print line 
    line = f.readline() 
f.close() 
+1

파이썬에서는 수동 카운터를 사용하는 것이 결코 좋은 이유가 아닙니다. 내장 된 [enumerate] (http://docs.python.org/2/library/functions.html#enumerate) 함수를 사용하십시오. – kojiro

+0

아, 카운터는 사용 방법을 알고있는 몇 안되는 것들 중 하나입니다! – Demonic

+0

저도 파이썬이 제 "사실"이 아니기 때문에 저는 펌웨어 녀석입니다.하지만 누군가에게 유용 할 거라고 생각했습니다. –

3
with open('myfile') as myfile: # Use a with statement so you don't have to remember to close the file 
    for line_number, data in enumerate(myfile): # Use enumerate to get line numbers starting with 0 
     if line_number == 3: 
      print(data) 
      break # stop looping when you've found the line you want 

추가 정보 :

+0

이것은 좋은 해결책입니다. 메모리에 모든 라인을 먼저로드하지는 않을 것입니다. – poke

+0

@poke : 물론, 그가 4 번째 라인을보고 싶지 않다면, 176 번째, 1 번째, 73 번째 라인을보고 싶지 않다면 ... – abarnert

+0

@abarnert 그래, 그 문제에 대해서는 좋은 해결책이 없다. 그 문제에 대한 좋은 해결책. – kojiro

관련 문제