Python 从文件读取sys.maxint

Python 从文件读取sys.maxint,python,file,Python,File,我有一些Python程序,可以从文件中读取某些值 文件示例: 解析每行的代码如下所示: s = f2.readline() p = int(s) 0 sys.maxint 5 6 我尝试在文件中传递sys.maxint,如下所示: s = f2.readline() p = int(s) 0 sys.maxint 5 6 其中一种方法是检查s=='sys.maxint'是否作为代码中的特例 我想知道是否还有另一种简洁的方法可以做到这一点?使用查找值字典,例

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

文件示例:

解析每行的代码如下所示:

    s = f2.readline()
    p = int(s)
0
sys.maxint
5
6
我尝试在文件中传递sys.maxint,如下所示:

    s = f2.readline()
    p = int(s)
0
sys.maxint
5
6
其中一种方法是检查s=='sys.maxint'是否作为代码中的特例


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

使用查找值字典,例如

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

您可以使用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
    >>> 
我不知道为什么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)
如果:


您可以使用eval,但我个人不会使用。@NPE:是的,您是对的,尤其是使用eval,但我个人不会,因为它危险、缓慢且过于笼统。sys.maxint有什么重要的地方,您希望在文件中指定它?手动输入该值有什么问题?这个文件来自哪里?@karlknechtel这是一个开源代码,所以我希望对它进行最少的修改。小心点?i、 e.您在调用之前解析其输入?