[英]Open multiple files and store the data in arrays in python
import numpy as np
import matplotlib.pyplot as plt
import csv
file = 'random_file'
with open(file + '.txt') as datafile:
for line in range(7):
next(datafile)
for line in datafile:
lines = datafile.readlines()
x0_1 = [float(line.split()[0]) for line in lines]
y1_1 = [float(line.split()[1]) for line in lines]
Z_1 = [float(line.split()[2]) for line in lines]
u_1 = [float(line.split()[3]) for line in lines]
v_1 = [float(line.split()[4]) for line in lines]
V0_1 = [float(line.split()[5]) for line in lines]
V1_1 = [float(line.split()[6]) for line in lines]
Yf_1 = [float(line.split()[7]) for line in lines]
Yo_1 = [float(line.split()[8]) for line in lines]
T_1 = [float(line.split()[9]) for line in lines]
Yp0_1 = [float(line.split()[10]) for line in lines]
Yp1_1 = [float(line.split()[11]) for line in lines]
D_1 = [float(line.split()[12]) for line in lines]
rho_1 = [float(line.split()[13]) for line in lines]
#Do something with the data
目前,我有這個代碼來打開單個文件,跳過文件中的前七行,然后將文件中的數據存儲到 arrays。 但是我有多個文件,我想以類似的方式讀取文件中的數據並將其存儲到 arrays。 到目前為止,我只是為不同的文件重復上面的代碼。 如何一次讀取所有文件並將數據存儲在 arrays 中?
數據文件看起來像這樣,
#First seven lines ignore #
0.00000E+00 5.00000E-04 9.28613E-01 6.58135E-02 4.05154E-01 6.58135E-02 4.05154E-01 9.24508E-01 2.01228E-16 4.44076E+02 1.12880E-02 9.23567E-03 2.46667E-05 4.53488E-01
0.00000E+00 1.50000E-03 8.14544E-01 9.64630E-02 3.82685E-01 9.64630E-02 3.82685E-01 8.03881E-01 0.00000E+00 6.74294E+02 2.93252E-02 2.39933E-02 2.46667E-05 3.15181E-01
0.00000E+00 2.50000E-03 5.46555E-01 1.40368E-01 1.23704E-01 1.40368E-01 1.23704E-01 5.20482E-01 0.00000E+00 1.21516E+03 7.17009E-02 5.86644E-02 2.46667E-05 2.01024E-01
0.00000E+00 3.50000E-03 1.23207E-01 1.08260E-01 -2.56808E-01 1.08260E-01 -2.56808E-01 7.27916E-02 0.00000E+00 2.06958E+03 1.38643E-01 1.13435E-01 2.46667E-05 1.54495E-01
您可以創建一個包含所有文件名的數組並遍歷它們。 只要文件以相同的方式存儲數據並且您想在其中讀取相同的內容。
像這樣的東西:
files = ['file1', 'file2', 'file3']
for file in files:
with open(file + '.txt') as datafile:
# Skip the first seven lines, Read the rest of the file
應該是評論,因為它不是直接的答案,但在評論中格式化代碼是不可能的。
當心:您的代碼實際上跳過了8行,而且效率極低。 問題在這里:
for line in range(7):
next(datafile) # ok, 7 lines skipped
for line in datafile: # read 8th line
lines = datafile.readlines() # lines only starts at the 9th line
此外,您為每個無效的字段重復拆分行。
由於您已經導入了 csv 模塊,您可以這樣做:
for line in range(7):
next(datafile) # ok, 7 lines skipped
x0_1, y1_1, Z_1, u_1, v_1, V0_1, V1_1, Yf_1, Yo_1, T_1, Yp0_1, Yp1_1, D_1, rho_1 = [
[float(i) for i in row] for row in zip(*csv.reader(datafile, delimiter=' ',
skipinitialspace=True))][:14]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.