質問

次のコードがあります。

# 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()を使用していません。使用しているリストから特定の値を取得する方法を混乱させます。

行に対応する私の2番目の質問:

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

LinuxのPythonで.xファイルを実行する方法はありますか?この行は問題を引き起こすようには見えませんが、このファイルがO_CAPA.TXTファイルを生成し、この時点までプログラムの残りの部分をテストするために手で記入する必要があるため、私はそれが機能しないことを知っています。

どんな助けも大歓迎です=)

役に立ちましたか?

解決

各変数の名前と行がわかっている場合は、辞書を作成します。

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'].

他のヒント

使ってみませんか

f.readlines()

あなたは以下に似た何かをループでreadlineを実行することができます

try:
    [fin.xreadlines().next() for i in xrange(0,<some_limit>)]
    d = float(fin.xreadlines().next())
except StopIteration:
    None
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top