我有一些Python程序从文件读取某些值。从文件中读取sys.maxint
文件例如:
0
4
5
6
解析每一行的代码如下:
s = f2.readline()
p = int(s)
我试图在文件中传递sys.maxint
代替如下:
0
sys.maxint
5
6
其中一种方法是检查if (s=='sys.maxint')
作为代码中的特殊情况。
不知有没有另外的整洁的这样做?
我有一些Python程序从文件读取某些值。从文件中读取sys.maxint
文件例如:
0
4
5
6
解析每一行的代码如下:
s = f2.readline()
p = int(s)
我试图在文件中传递sys.maxint
代替如下:
0
sys.maxint
5
6
其中一种方法是检查if (s=='sys.maxint')
作为代码中的特殊情况。
不知有没有另外的整洁的这样做?
我不知道为什么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)
使用查找值的字典,例如,
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
>>>
*您可以*使用'EVAL ()',但我个人不会。 – NPE
@NPE为什么不呢? – Betamoo
@NPE:是的,你说的对,特别是“但我本人不会” –