在Python中调用.x文件(Linux)并列出
我有以下的代码:
# 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']
。