在Python中调用.x文件(Linux)并列出

-2 投票
3 回答
1183 浏览
提问于 2025-04-17 07:44

我有以下的代码:

# 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,而到目前为止,我一直得手动填写这个文件来测试我程序的其他部分。

任何帮助都将非常感谢 =)

3 个回答

1

你可以像下面这样在一个循环中运行readline。

try:
    [fin.xreadlines().next() for i in xrange(0,<some_limit>)]
    d = float(fin.xreadlines().next())
except StopIteration:
    None
1

你为什么不使用

f.readlines()
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']

撰写回答