【发布时间】:2013-06-14 23:16:22
【问题描述】:
import sys, subprocess, glob
mdbfiles = glob.glob('*.res')
for DATABASE in mdbfiles:
subprocess.call(["mdb-schema", DATABASE, "mysql"])
table_names = subprocess.Popen(["mdb-tables", "-1", DATABASE],
stdout=subprocess.PIPE).communicate()[0]
tables = table_names.splitlines()
sys.stdout.flush()
a=str('Channel_Normal_Table')
for table in tables:
if table != '' and table==a:
filename = DATABASE.replace(".res","") + ".csv"
file = open(filename, 'w')
print("Dumping " + table)
contents = subprocess.Popen(["mdb-export", DATABASE, table],
stdout=subprocess.PIPE).communicate()[0]
# I NEED TO PUT SOMETHING HERE TO SORT AND EXTRACT THE DATA I NEED
file.write(contents)
file.close()
我有一个从数据库中提取的表。让我们称之为table。我需要执行以下操作,我有点卡住了:
Cycle Test_Time Current Voltage
1 7.80E-002 0.00E+000 1.21E-001
1 3.01E+001 0.00E+000 1.19E-001
1 6.02E+001 0.00E+000 1.17E-001
2 9.02E+001 0.00E+000 1.14E-001
2 1.20E+002 0.00E+000 1.11E-001
2 1.50E+002 0.00E+000 1.08E-001
2 1.80E+002 0.00E+000 1.05E-001
2 2.10E+002 0.00E+000 1.02E-001
3 2.40E+002 0.00E+000 9.93E-002
3 2.70E+002 0.00E+000 9.66E-002
3 3.00E+002 0.00E+000 9.38E-002
3 3.10E+002 4.00E-001 1.26E+000
- 提取每个周期的最后(最新)行,或者更高级地对周期进行排序 按时间提取循环中时间最晚的行。作为 你可以看到,最后一行并不总是有最新的时间,因为 我们的测试机故障,但通常会发生。但越大的 时间越晚。
- 提取最后五个周期的所有行
- 提取周期 4 到周期 30 的所有行。
我尝试了各种方法,例如根据我有限的 Python 知识创建和排序字典和列表,但都没有产生所需的输出。它只是让我发疯。非常感谢!
【问题讨论】:
-
你可能想看看 Pandas:pandas.pydata.org
-
这些是使用 awk 和其他 shell 实用程序非常简单的任务
-
为什么不能在数据库本身中执行此操作?
-
伙计们。这是我必须完成的项目。我们正在将脚本从 bash 转换为 Python。我有需要处理的 .mdb 文件。所以我能够提取必要的表格,但我需要对该表格进行排序并提取特定数据。我不是程序员,对 Python 知之甚少,因此将不胜感激。谢谢。
标签: python linux sorting csv dictionary