我试了几个小时来研究这个问题,但是每个可能的解决方案并不适合我的特殊需求。 我在Python(v3.5)中编写了以下内容以下载制表符分隔的.txt文件。使用Python v3.5加载制表符分隔文件,省略一些行,并将特定列中的最大和最小浮点数输出到新文件
#!/usr/bin/env /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
import urllib.request
import time
timestr = time.strftime("%Y-%m-%d %H-%M-%S")
filename="/data examples/"+ "ace-magnetometer-" + timestr + '.txt'
urllib.request.urlretrieve('http://services.swpc.noaa.gov/text/ace-magnetometer.txt', filename=filename)
This downloads the file from here and renames it based on the current time。它完美的作品。
我希望我可以使用“文件名”变量然后加载文件并做一些事情(而不是写出完整的文件路径和文件名,因为我的最终目标是做以下几百个不同的文件,所以长期使用变量会更容易)。
这使用最可变想法似乎工作,因为添加以下上面打印文件输出到标准输出的内容......(所以它能够找到该文件没有任何问题):
import csv
with open(filename, 'r') as f:
reader = csv.reader(f, dialect='excel', delimiter='\t')
for row in reader:
print(row)
从the file可以看出,前18行是信息性的。 第19行提供了实际的列名称。然后是一行破折号。
的实际数据我很感兴趣,开始在线21
我想找到(右第三列),在“BT”列中的最小和最大数字。我发现的一种可能的解决方案只能用于整数,而这个数据集具有浮点数。
另一种可能的解决方案涉及导入pyexcel模块,但我似乎无法正确安装...
import pyexcel as pe
data = pe.load(filename, name_columns_by_row=19)
min(data.column["Bt"])
我希望能够在最小的BT和最大的Bt值打印成两个单独的文件,称为minBt.txt和maxBt.txt。
我希望任何人有任何指示,请。
那完美。谢谢,Apoc! :) – ZPMMaker
好的,下一个问题,如果你不介意请...有时传感器无法进行测量(因此创建我正在下载的文件的系统改为在该列中输入-999.9。是否有在搜索min_bt值之前过滤出所有等于-999.9的值的方法?再次感谢您的帮助。:) – ZPMMaker
好的,我已经更新了答案,以包含解决方法。它只会添加列中的值,如果它们不等于'-999.9'。 – Apoc