2013-06-02 5 views
0

문자열을 (파일로) 사용하는 함수를 작성하려고하는데이 파일에는 정수와 부동 소수점의 숫자가 별도의 줄에 들어 있습니다. 그런 다음 파일에있는 숫자를 인쇄하려고합니다. 0보다 큼. 나는 Python을 처음 접했을 때 출력물을 얻는 데 어려움을 겪고있다.파일에서 실수와 정수를 읽는 방법은 무엇입니까?

def getPositive(filename): 
    infile = open(filename, 'r') 
    content = (infile.read()) 
    infile.close() 

    for number in content: 
     if number <= 0: 
      print (content.remove(number)) 

그리고 내 파일에 내가 가지고

>>> getPositive('nums1.txt') 
Traceback (most recent call last): 
    File "<pyshell#11>", line 1, in <module> 
    getPositive('nums1.txt') 
    File "/Users/XXXX/Desktop/test.py", line 8, in getPositive 
    if number <= 0: 
TypeError: unorderable types: str() <= int() 

또한 오류가 계속 : 지금까지 내가 가진

59 
-3.2 
12.99 
-1 
45.3 
20 

을하고 난 단지 인쇄를 원하는 :

59 
12.99 
45.3 
20 

수 있습니다. 제가 잘못하고있는 일과 그것을 고치기 위해해야 ​​할 일을 제게 설명해주십시오.

답변

1

사용은 float() function 번호로 파일에서 문자열을 켭니다 :

for line in content: 
    number = float(line) 
    if number > 0: 
     print(number) 

메모리에 전체 파일을 읽을 필요가 없습니다; 대신 라인으로 라인을 처리 :

def getPositive(filename): 
    with open(filename, 'r') as infile: 
     for line in infile: 
      number = float(line) 
      if number > 0: 
       print(line.rstrip()) 

with 문은 파일 객체가 자동으로 닫혀 있는지 확인합니다.

출력 : 내가 infile.close을 추가 할 때

>>> getPositive('/tmp/test.txt') 
59 
12.99 
45.3 
20 
+0

때문에 ( 가 잘못, 또는 문으로 사용 않음) 그냥은 깔끔한 무엇입니까? – M15671

+0

'with'를 사용할 때는'infile.close()'를 사용할 필요가 없습니다. http://preshing.com/20110920/the-python-with-statement-by-example –

+0

을 참조하십시오. intness와 newlines를 유지하는 float 대신'print line '을 사용하십시오. – sleeplessnerd

관련 문제