从文件中读取sys.maxint

时间:2013-01-21 07:54:31

标签: python file

我有一些Python程序从文件中读取某些值。

文件示例:

0
4
5
6

解析每一行的代码如下:

    s = f2.readline()
    p = int(s)

我正在尝试在文件中传递sys.maxint,如下所示:

0
sys.maxint
5
6

其中一种方法是将if (s=='sys.maxint')视为代码中的特殊情况。

我想知道是否还有其他整洁的方法呢?

3 个答案:

答案 0 :(得分:6)

使用查找值字典,例如

import sys

constants = {"sys.maxint" : sys.maxint, "meaning_of_life": 42}

with open("input.txt", "r") as f:
    for line in f2:
        s = line.rstrip("\n")
        try:
            p = int(s)
        except ValueError, ve:
            p = constants.get(s)
            if p is None:
                raise ve

答案 1 :(得分:1)

我不确定为什么if不是“整洁”。在我看来,这是显而易见的解决方案。如果你真的想在没有if的情况下这样做,你可以这样做(使用不必要的字符串表示):

#! /usr/bin/python2.7
import sys

for s in (s.strip () for s in open ('test', 'r') ):
    p = int (s.replace ('sys.maxint', str (sys.maxint) ) )
    print (p)

我个人会保留if

for s in (s.strip () for s in open ('test', 'r') ):
    p = sys.maxint if s == 'sys.maxint' else int (s)
    print (p)

答案 2 :(得分:0)

您可以使用eval功能。虽然它可以达到目的,但应谨慎使用。

    Python 2.7.1+ (r271:86832, Sep 27 2012, 21:16:52) 
    [GCC 4.5.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> a = eval('0')
    >>> import sys
    >>> a = eval('sys.maxint')
    >>> a
    2147483647
    >>>