2013-01-24 3 views
-4

그래서이 코드를 python 2.7.3에서 ./randline.py test.txt 명령으로 실행하면이 코드가 올바르게 작동합니다.python 2.7.3에서 완벽하게 작동하지만 python 3에서 오류가 발생했습니다.

import random, sys 
from optparse import OptionParser 

class randline: 
    def __init__(self, filename): 
     f = open(filename, 'r') 
     self.lines = f.readlines() 
     f.close() 

    def chooseline(self): 
     return random.choice(self.lines) 

def main(): 
    version_msg = "%prog 2.0" 
    usage_msg = """%prog [OPTION]... FILE 

Output randomly selected lines from FILE.""" 

    parser = OptionParser(version=version_msg, 
         usage=usage_msg) 
    parser.add_option("-n", "--numlines", 
        action="store", dest="numlines", default=1, 
        help="output NUMLINES lines (default 1)") 
    options, args = parser.parse_args(sys.argv[1:]) 

    try: 
     numlines = int(options.numlines) 
    except: 
     parser.error("invalid NUMLINES: {0}". 
        format(options.numlines)) 
    if numlines < 0: 
     parser.error("negative count: {0}". 
       format(numlines)) 
    if len(args) != 1: 
     parser.error("wrong number of operands") 
    input_file = args[0] 

    try: 
     generator = randline(input_file) 
     for index in range(numlines): 
      sys.stdout.write(generator.chooseline()) 
    except IOError as (errno, strerror): 
     parser.error("I/O error({0}): {1}". 
        format(errno, strerror)) 

if __name__ == "__main__": 
    main() 

내가 파이썬 3에서이 코드를 실행하려고 할 때 나는 오류 메시지 ": 파일을 열 수 없습니다 '3'[errno를 2] 해당 파일이나 디렉토리/usr/bin/python을"가지고 파이썬 3 인터프리터에 대해이 코드에 문제가 있습니까?

+0

들여 쓰기를 수정할 수 있습니까? –

+2

'/ usr/bin/python3' 대신에'/ usr/bin/python 3'을 찾았습니다. –

답변

5

python 3 (공백으로 표시)처럼 보입니다. 대신 python3을 사용해야합니다.

+0

"-bash : ./randline.py :/usr/bin/python3 : 불량 인터프리터 : 해당 파일이나 디렉토리가 없습니다. " – user1988385

+1

python3을 설치 했습니까? – favoretti

+0

설치 여부를 어떻게 확인합니까? 나는 학교에서 컴퓨터를 사용하고있다. 나는 디폴트가 2.7.3이고, 3에 대해서는 확실하지 않다고 생각했다. – user1988385

0

python2.7.3과 python3. *은 다른 구문을 사용하므로 코드는 python2.7.3을 사용하여 작동하고 python3. *을 사용하여 작동하지 않을 수 있습니다. 예를 들어

인쇄 '안녕하세요'
python2.7.3를 사용하여 작동하지만 python3를 사용하여 오류를 수신합니다. *. 그것을 실행하려면 print ('Hello world')

그래서 구문을 python3. * 형식으로 변경하십시오. 하지만 내 제안은 python2.7.3을 사용하여 코드를 실행하는 것입니다.

관련 문제