2013-01-24 66 views
-4

因此,當我在python 2.7.3中使用命令./randline.py test.txt運行此代碼時,此代碼可以正常工作。然而,當我嘗試運行在Python 3的代碼我得到一個錯誤信息「的/ usr/bin中/ Python的:無法打開文件‘3’:[錯誤2]沒有這樣的文件或目錄」在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() 

python 3解釋器的代碼有什麼問題嗎?

+0

你能修理你的縮進嗎? –

+2

尋找你說'/ usr/bin/python 3'而不是'/ usr/bin/python3'的位置 –

回答

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接收錯誤。*。要運行它,我們必須使用打印(「世界,你好」)

所以只是改變了語法python3。*格式。但我的建議是使用python2.7.3來運行你的代碼。

相關問題