在python中快速读取hdf,怎样用python读取文件

发布时间:2022-11-22

本文目录一览:

  1. PYTHON 读取HDF格式数据出错?
  2. Python读取文件内容的方法有几种
  3. 如何用numpy提取HDF5數據
  4. 大家好,我想用python代码批量打开一个文件夹中的所有HDF文件,然后进行处理。
  5. python如何读取文件的内容
  6. python 读取大文件数据怎么快速读取

PYTHON 读取HDF格式数据出错?

加一句在最前面看输出什么

import os
print(os.path.isfile("D:/data/04modis/MCD15A2H.A2002185.h00v08.006.2015149102758.hdf"))

Python读取文件内容的方法有几种

python读取文本文件内容的方法主要有三种:read()readline()readlines()

第一种:read()

read()是最简单的一种方法,一次性读取文件的所有内容放在一个大字符串中,即内存中。

  • 好处:方便、简单,一次性读出文件放在一个大字符串中,速度最快。
  • 坏处:文件过大的时候,占用内存会过大。

第二种:readline()

readline()逐行读取文本,结果是一个list。

  • 好处:占用内存小,逐行读取。
  • 坏处:逐行读取,速度比较慢。

第三种:readlines()

readlines()一次性读取文本的所有内容,结果是一个list。

  • 好处:一次性读取文本内容,速度比较快。
  • 坏处:随着文本的增大,占用内存会越来越多。

如何用numpy提取HDF5數據

我觉得你尽量分解开来:

  1. hdf5文件的读取,这个当然是用python的hdf库比如ls说的h5py,读成你需要的格式或类型,比如numpy的矩阵类型;
  2. 从numpy的角度考虑将矩阵数据绘制出图!

大家好,我想用python代码批量打开一个文件夹中的所有HDF文件,然后进行处理。

很明显,你这里的错误:

pyhdf.error.HDF4Error: SD: no such file

是和pyhdf,这个python第三方的库有关系。 即,除非:

  • 某人非常熟悉pyhdf这个库
  • 有人就是pyhdf的开发者 否则,都很难找到根本的原因和解决办法啊。 所以,我是没办法帮你。 除非:
  • 有你的完整的代码
  • 有你的所有的对应的HDF文件
  • 并且模拟你的环境,花时间去调试你这些代码
  • 然后,或许,能解决你的问题。。。。。。。。

python如何读取文件的内容

# _*_ coding: utf-8 _*_
import pandas as pd
# 获取文件的内容
def get_contends(path):
    with open(path) as file_object:
        contends = file_object.read()
    return contends
# 将一行内容变成数组
def get_contends_arr(contends):
    contends_arr_new = []
    contends_arr = str(contends).split(']')
    for i in range(len(contends_arr)):
        if (contends_arr[i].__contains__('[')):
            index = contends_arr[i].rfind('[')
            temp_str = contends_arr[i][index + 1:]
            if temp_str.__contains__('"'):
                contends_arr_new.append(temp_str.replace('"', ''))
    return contends_arr_new
if __name__ == '__main__':
    path = 'event.txt'
    contends = get_contends(path)
    contends_arr = get_contends_arr(contends)
    contents = []
    for content in contends_arr:
        contents.append(content.split(','))
    df = pd.DataFrame(contents, columns=['shelf_code', 'robotid', 'event', 'time'])

扩展资料:

python控制语句

  1. if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
  2. for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
  3. while语句,当条件为真时,循环运行语句块。
  4. try语句,与except, finally配合使用处理在程序运行中出现的异常情况。
  5. class语句,用于定义类型。
  6. def语句,用于定义函数和类型的方法。

python 读取大文件数据怎么快速读取

python中读取数据的时候有几种方法,无非是readreadlinereadlinesxreadlines几种方法,在几种方法中,readxreadlines可以作为迭代器使用,从而在读取大数据的时候比较有效果。 在测试中,先创建一个大文件,大概1GB左右,使用的程序如下:

import os.path
import time
while os.path.getsize('messages') < 1000000000:
    f = open('messages','a')
    f.write('this is a file\n')
    f.close()
print 'file create completed'

测试代码如下:

# 22s
start_time = time.time()
f = open('messages','r')
for i in f:
    pass
end_time = time.time()
print(end_time - start_time)
f.close()
# 22s
start_time = time.time()
f = open('messages','r')
for i in f.xreadlines():
    pass
end_time = time.time()
print(end_time - start_time)
f.close()
start_time = time.time()
f = open('messages','r')
k = f.readlines()
f.close()
end_time = time.time()
print(end_time - start_time)

使用迭代器的时候,两者的时间是差不多的,内存消耗也不是很多,使用的时间大概在22秒左右。 在使用完全读取文件的时候,使用的时间在40s,并且内存消耗相当严重,大概使用了1G的内存。 其实,在使用跌倒器的时候,如果进行连续操作,进行print或者其他的操作,内存消耗还是不可避免的,但是内存在那个时候是可以释放的,从而使用迭代器可以节省内存,主要是可以释放。 而在使用直接读取所有数据的时候,数据会保留在内存中,是无法释放这个内存的,从而内存卡死也是有可能的。 在使用的时候,最好是直接使用for i in f的方式来使用,在读取的时候,f本身就是一个迭代器,其实也就是f.read方法。