我有一些 Python 程序可以从文件中读取某些值。
文件示例:
0
4
5
6
解析每一行的代码如下:
s = f2.readline()
p = int(s)
我正在尝试sys.maxint
按如下方式传递文件:
0
sys.maxint
5
6
这样做的一种方法是检查if (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
我不确定为什么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)
您可以使用 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
>>>