批量读取文件

本文详细解析了SCSI读写命令如何随硬盘容量增长而演变,从早期的read(6)和write(6)到read(10)、write(10),直至现今的read(16)和write(16),以应对不同容量硬盘的需求。

大家知道,我们读写硬盘的时候发送的命令为SCSI READ或SCSI WRITE。即SCSI读和SCSI写命令。但是READ和WRITE有很多种,这些命令的应用场合是什么呢?

最重要的一点就是,这是跟硬盘的容量大小有关的。

在很久以前,硬盘的容量很小,比如只有32MB。大家知道硬盘的LBA为512Byte。所以如果要表示32MB的空间需要2的16次方*512B=32MB

也就是说2个byte即可表示一个32MB的地址。

所以,在那个时候的读写命令就是read(6)和write(6),他们指定的LBA长度为2个byte!

但是随着磁盘容量的变大,2个byte完全不能表示硬盘的空间地址。那如果我想读写更大空间的内容呢,所以就用到了write(10)、read(10),他们指定的LBA长度为4个byte,因此表示的最大容量为2的32次方*512B=2TB。所以2TB以内的硬盘都可以用write(10)和read(10)

但是2TB显然不是终点,4个byte又不够了,怎么办,于是发展到了8个byte。这就是read(16)和write(16),他能表示的空间就大多了,估计在我们有生之年是彻底够用了。

import os
import pandas as pd
import codecs

path='D:/code12temp/pytorch/传统医疗敏感信息处理/data/'

listfile=os.listdir(path)
# print (listfile[0])

#去除重复行
# for i_file in listfile:
#    line_seen = set()  # 初始化空的无序集合
#    if '_xml' in i_file or 'dup' in i_file:
#
#        in_file=codecs.open(path+"\\"+i_file,mode='r',encoding='gbk')
#        i_file=i_file.replace('.txt','_dup.txt')
#        out_file=codecs.open(path+"\\"+i_file,mode='w',encoding='gbk') #w 如果文件不存在就新建
#        lines = in_file.readlines()
#        for line in lines:
#           if line not in line_seen:
#              out_file.write(line)
#              line_seen.add(line)
#        out_file.close()

import re

# strinfo = re.compile('word')
# b = strinfo.sub('python',a)

#去除各种符号
for i_file in listfile:
line_dup=set()
if ‘_xml’ in i_file and ‘dup’ in i_file:

   in_file = codecs.open(path + "\\" + i_file, mode='r', encoding='gbk')
   i_file = i_file.replace('.txt', '_preproc.txt')
   out_file=codecs.open(path+"\\"+i_file,mode='w',encoding='gbk') #w 如果文件不存在就新建
   lines = in_file.readlines()
   for line in lines:
       if len(set(line))==0:
           continue
       else:

         line=line.strip(' ')  #去除两端空格
         line=line.replace('{none}','')
         line=line.replace(' ','')
         line=line.replace('<FONT color=#ff0000>','')
         line=line.replace('</FONT>','')
         line = line.replace('"', '')
         line = line.replace('\?', '')
         line = line.replace('{COL}', '')
         re_fenhao= re.compile('&(.*?);')
         line=re_fenhao.sub('',line)
         reExp=re.compile('<(.*?)>') #去掉尖括号
         line=reExp.sub('',line)
         re_space=re.compile('\s{1,}')#去掉空格
         line=re_space.sub(' ',line)
         re_ques=re.compile('\?{1,}')#去掉多个问好
         line=re_ques.sub('',line)
         re_zhongkuohao_l=re.compile('\{')#去掉中括号
         line=re_zhongkuohao_l.sub('',line)
         re_zhongkuohao_r = re.compile('\}')
         line = re_zhongkuohao_r.sub('', line)#
         line=line.strip(' ')  #去除两端空
         if line not in line_dup:
            out_file.write(line)
            line_dup.add(line)
            out_file.write('\n')
   out_file.close()
   pass
### 回答1: Matlab可以通过编写脚本批量读取同一个文件夹下多个文件的数据。首先需要确定需要读取文件夹路径和文件名的格式。通常文件名的格式为“文件前缀+数字+文件后缀”,例如“data_001.csv”、“data_002.csv”等。 接着,可以使用循环语句对文件进行遍历,读取每个文件的数据。比如可以使用for循环对文件名中的数字进行遍历,从而逐个读取文件中的数据。 读取文件的方式可以根据文件的格式选择不同的函数,例如CSV格式的文件可以使用csvread函数进行读取。在读取文件时,还需注意确定所读取数据的起始行和终止行,以及需要提取的列数等参数。 读取文件中的数据后,可以对数据进行处理,如数据统计、可视化等操作。最后,需要将处理后的数据保存到新的文件中,便于后续的分析和使用。 总的来说,Matlab批量读取文件需要确定文件路径和文件名格式、使用循环语句遍历文件、选择合适的函数读取文件中的数据、对数据进行处理和保存等步骤。掌握这些操作可以方便地进行大量数据的处理和分析。 ### 回答2: Matlab是一种高级计算机语言和交互式环境,主要用于算法开发、数据分析和可视化任务。在Matlab中,批量读取文件非常常见,可以方便地为我们处理大量数据。 1.使用dir命令列出要读取的所有文件名及其路径 使用dir命令可以得到文件夹中所有文件的名称和路径信息。在Matlab中,该命令会返回包含文件名、日期、大小或其他相关信息的结构体。可以创建一个字符串变量来存储文件夹路径,然后使用dir命令获取文件夹中的所有文件名,并将其存储在一个单独的矩阵中。 2.使用循环读取所有文件 使用循环,逐个读取文件。在循环中,使用读取文件的命令,将每个文件读取为矩阵或向量,然后将所有文件按行或列连接在一起。 3.处理每个文件读取了所有文件后,可以对它们进行任何必要的处理。这包括从中提取数据、计算统计量、可视化数据等。 下面是一个示例程序: %设置文件夹路径 folder = 'C:\data\'; %使用dir命令获取包含文件夹中所有文件名的结构体 files = dir(fullfile(folder,'*.xlsx')); % 循环读取所有文件 for ii=1:length(files) % 读取单个文件 filename = fullfile(folder,files(ii).name); data = xlsread(filename); % 处理读取的数据 % 例如:绘制散点图 scatter(data(:,1), data(:,2)) hold on end 该程序将从C:\data文件夹中读取所有扩展名为.xlsx的文件,并对每个文件的第一列和第二列绘制散点图。其他常见的文件扩展名包括.txt、.csv、.dat、.mat等。 需要注意的是,读取大量文件时,可能需要对程序进行优化,以避免内存和计算资源的限制。可以选择逐步读取文件,或使用Matlab的并行计算功能加速程序运行。 ### 回答3: 在matlab中实现批量读取文件可以让我们更快捷地读取许多文件的数据。下面将介绍两种常见的方法来批量读取文件。 1. 使用循环读取文件 这种方法比较简单,我们只需要使用matlab自带的循环语句,逐个打开文件即可。代码示例如下: ``` files = dir('*.txt'); % 获取所有txt文件 for i = 1:length(files) filename = files(i).name; % 获取当前文件名 data{i} = load(filename); % 读取数据到data变量中 end ``` 该代码中,我们首先使用dir函数获取当前工作路径下所有的.txt文件。然后使用for循环语句对每个文件进行读取,将数据依次保存到data变量中,其中i为计数器,遍历到文件数量即可结束循环。 2. 使用cell数组读取文件 除了循环读取文件外,我们还可以使用matlab的cell数组存储所有文件的数据。代码示例如下: ``` files = dir('*.txt'); % 获取所有txt文件 data = cell(length(files), 1); % 创建一个长度为文件数的cell数组 for i = 1:length(files) filename = files(i).name; % 获取当前文件名 data{i} = load(filename); % 读取数据到data变量中 end ``` 这里我们首先根据文件数量创建一个大小为(length(files), 1)的cell数组,然后仍然使用for循环读取每个文件的数据并保存。读取完成后,我们就可以使用data{1}, data{2}...来访问每个文件数据。 总的来说,以上两种方法都可以实现批量读取文件数据的目的。需要根据实际情况选择相应的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值