我有一些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:是的,你說的對,特別是「但我本人不會」 –