0

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

文件示例:

0
4
5
6

解析每一行的代码如下:

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

我正在尝试sys.maxint按如下方式传递文件:

0
sys.maxint
5
6

这样做的一种方法是检查if (s=='sys.maxint')代码中的特殊情况。

我想知道是否有另一种巧妙的方法可以做到这一点?

4

3 回答 3

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
于 2013-01-21T08:04:21.963 回答
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)
于 2013-01-21T08:35:04.033 回答
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
    >>> 
于 2013-01-21T08:04:26.827 回答