-4

したがって、コマンド ./randline.py test.txt を使用して python 2.7.3 でこのコードを実行すると、このコードは正常に動作します。ただし、このコードを python 3 で実行しようとすると、「/usr/bin/python: can't open file '3': [Errno 2] No such file or directory」というエラー メッセージが表示されました。

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 インタープリターのこのコードに問題はありますか?

4

2 に答える 2

5

あなたが走っているように見えますpython 3(スペース付き)。python3代わりに使用する必要があります。

于 2013-01-24T20:33:37.363 に答える
0

python2.7.3 と python3.* は構文が異なるため、コードは python2.7.3 を使用すると機能し、python3.* を使用すると機能しない場合があります。例えば

print 'hello world'
は python2.7.3 を使用して動作しますが、python3.* を使用するとエラーが発生します。実行するには、print('Hello world')を使用する必要があります。

したがって、構文を python3.* 形式に変更するだけです。しかし、私の提案は、python2.7.3 を使用してコードを実行することです。

于 2013-01-24T21:27:40.383 に答える