-2

我有以下代码:

# Initialisations

filename='/home/Admin/Desktop/Ncapa/i_capa.txt'
f = open(filename, 'r') 

ty = "r"
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()

d = float(f.readline())
D = float(f.readline())
BB = float(f.readline())
vrR = float(f.readline())
P = float(f.readline())
f0 = float(f.readline())
f1 = float(f.readline())

f.close()
os.system('ls -lt > ./capacite.x')
filename2 = '/home/Admin/Desktop/Ncapa/o_capa.txt'
f = open(filename2, 'r')

f.readline()
f.readline()
f.readline()
f.readline()
c0 = float(f.readline())

f.close()   

我的第一个问题(正如您可能已经猜到的那样,是一个非常简单的问题),有没有办法将 f.readline 块简化为简单的东西?我总是对如何读取文本文件然后从列表中获取值分配给变量感到困惑。所以我最终这样做了,因为我喜欢它的工作方式,但不喜欢整个代码的外观。我没有使用 f.readlines() 因为我很困惑如何从使用它的列表中获取某些值。

我的第二个问题对应于该行:

os.system('ls -lt > ./capacite.x')

有没有办法在 Linux 中的 Python 中执行 .x 文件?该行似乎没有引起任何问题,但我知道它也不起作用,因为该文件生成 o_capa.txt 文件,直到此时我不得不手动填写以测试我的程序的其余部分。

任何帮助将不胜感激 =)

4

3 回答 3

2

如果您知道每个变量的名称和行,请创建一个字典:

position = {12: 'd',
            13: 'D', ... }
data = {}
with open(filename, 'r') as f:
    for i, line in enumerate(f):
        if i in position:
            data[position[i]] = float(line.strip())

然后data像使用变量一样使用字典,例如data['d'].

于 2011-12-05T15:24:39.123 回答
1

你为什么不使用

f.readlines()
于 2011-12-05T15:25:04.813 回答
1

您可以在类似于下面的循环中运行 readline

try:
    [fin.xreadlines().next() for i in xrange(0,<some_limit>)]
    d = float(fin.xreadlines().next())
except StopIteration:
    None
于 2011-12-05T15:34:51.463 回答