Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python迭代器详解

python迭代器详解

作者头像
20岁爱吃必胜客
发布于 2023-03-26 01:45:52
发布于 2023-03-26 01:45:52
68600
代码可运行
举报
文章被收录于专栏:进步集进步集
运行总次数:0
代码可运行

不懂的问题:什么是协变、逆变?渐进式?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_T_co = TypeVar("_T_co", covariant=True)  # Any type covariant containers.

🏆 学习系列专栏 。🏅 Python学习宝库 。🏅 网络安全学习宝库

文章目录

⭐️迭代器详解

Python迭代器是Python编程语言中非常常用的一种工具。它是访问容器(例如列表、元组等)中的元素的一种方式,可以逐个访问容器中的元素,而不必整个容器存储在内存中。

Python迭代器可以被定义为:

  1. 一个实现了__iter__()方法的对象;
  2. 通过调用__next__()方法来逐个访问容器中的元素。

🌟迭代器示例

下面是一个简单的Python迭代器示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyIterator:
  def __init__(self, lst):
    self.lst = lst# 列表
    self.index = 0# 索引

  def __iter__(self):
    return self

  def __next__(self):
    if self.index < len(self.lst):
      value = self.lst[self.index]
      self.index += 1
      return value
    else:
      raise StopIteration

在这个示例中,我们创建了一个称为"MyIterator"的类,它包含了一个列表和一个索引值。该类还实现了__iter__()__next__()方法。

🌟__iter__()与__next__()方法解释

__iter__()方法返回该对象本身,因此可以直接对该对象使用for...in...语句进行迭代。__next__()方法则根据当前索引值来获取列表中的下一个元素,如果已经到达列表末尾,则抛出StopIteration异常。

以下是一个使用MyIterator迭代器的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_list = [1, 2, 3, 4, 5]
my_iter = MyIterator(my_list)
for item in my_iter:
  print(item)

执行结果为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1
2
3
4
5

这是一个简单的例子,实际上Python迭代器可以应用于许多不同类型的容器,包括列表、元组、字典以及文件等

🌟常用迭代器zip和enumerate

在Python标准库中,还提供了一些常用的迭代器,例如enumerate()zip()

从更深层次上来讲,Python迭代器是支持惰性计算(lazy evaluation)的一种工具。惰性计算指的是在需要时才进行计算,而非提前将所有的计算都执行完毕。对于大型数据集合,惰性计算可以节省内存开销并提高程序性能。 Python迭代器的另一个特点是可逆性(reversibility),也就是说我们可以通过反向迭代器(reverse iterator)逆序访问容器中的元素。Python标准库中提供了reversed()函数用于创建反向迭代器。以下是一个简单示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_list = [1, 2, 3, 4, 5]
for item in reversed(my_list):
  print(item)

执行结果为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
5
4
3
2
1

🌟itertools模块提供的各种迭代器类型

此外,Python迭代器还支持使用itertools模块提供的各种迭代器类型,例如cycle()count()groupby()等。

需要注意的是,Python 2.x版本中的迭代器实现与Python 3.x有所不同,因此在编写跨Python版本的代码时应当谨慎。

总的来说,Python迭代器是Python编程语言中非常强大和灵活的工具,可以应用于各种场景和数据类型,帮助我们更加高效地处理数据和任务。

🌟 源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Iterator(Iterable[_T_co], Protocol[_T_co]):
    @abstractmethod
    def __next__(self) -> _T_co: ...
    def __iter__(self) -> Iterator[_T_co]: ...
    
class Iterable(Protocol[_T_co]):
    @abstractmethod
    def __iter__(self) -> Iterator[_T_co]: ...

🌟Python迭代器常见的用法

  1. 计算斐波那契数列

斐波那契数列是指从0和1开始,后续的每一项都是前面两项的和。使用Python迭代器可以很方便地计算斐波那契数列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Fib:
    def __init__(self, max):
        self.max = max

    def __iter__(self):
        self.a = 0
        self.b = 1
        return self

    def __next__(self):
        fib = self.a
        if fib > self.max:
            raise StopIteration
        self.a, self.b = self.b, self.a + self.b
        return fib

以上代码定义了一个Fib类,实现了__iter____next__两个方法,该类实现了一个迭代器,可以使用for-in语句遍历所有小于max的斐波那契数列元素。

  1. 读取大型文件数据

当我们需要处理大量数据时,将整个数据集加载到内存中可能会导致程序崩溃或效率低下。使用Python迭代器来处理大型文件数据非常理想,这种方式只在内存中维护当前处理的数据块,而不需要一次性读取整个文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
with open('large_file.txt', 'r') as f:
    for line in f:
        process_line(line)

以上代码打开一个大型文件并使用for-in语句迭代遍历每一行数据,可以在不占用太多内存的情况下逐行处理文件。

  1. 实现生成器函数

除了使用类来定义迭代器,Python还支持使用生成器函数(generator function)来实现迭代器。生成器函数可以通过yield语句来产生值,当生成器被调用时,它将返回一个可迭代对象,使用for-in语句可以遍历这个可迭代对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def my_generator(max):
    for i in range(max):
        yield i

for item in my_generator(5):
    print(item)

以上代码定义了一个生成器函数my_generator,使用yield语句来产生0~max-1的数字。使用for-in语句可以遍历这个生成器函数产生的可迭代对象,输出结果为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0
1
2
3
4

⭐️迭代器与生成器的区别

在Python中,除了迭代器外,还有一种非常常见的工具就是生成器(generator)。两者都可以用yield语句实现,但它们有一些区别。

  • 迭代器必须实现__iter____next__方法,而生成器只需要实现一个yield语句即可。
  • 生成器可以保存状态,每次调用yield语句时会自动保存当前的局部变量和执行位置,并在下一次调用时恢复执行状态,从而实现了迭代器的功能。
  • 生成器的主要作用是生成序列,而迭代器则可以用于各种数据结构的遍历,包括序列、映射、文件等。

🌟生成器的例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

以上代码定义了一个名为fibonacci的生成器,它可以按照斐波那契数列的规律不断生成新的数值。我们可以使用for-in语句来迭代这个生成器,也可以使用next函数单独获取它的下一个值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f = fibonacci()
print(next(f))  # 输出 0
print(next(f))  # 输出 1
print(next(f))  # 输出 1
print(next(f))  # 输出 2

⭐️迭代器的内部实现

Python中的迭代器实际上是基于协议(protocol)实现的,它需要满足两个条件:

  • 实现__iter__方法并返回self
  • 实现__next__方法,并在每次调用时返回下一个值,如果没有下一个值则抛出StopIteration异常。

在Python中,任意对象只要满足以上两个条件就可以作为迭代器使用。以下是一个简单的自定义迭代器的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        value = self.data[self.index]
        self.index += 1
        return value

以上代码定义了一个名为MyIterator的迭代器类,它包含了一个列表作为数据源

⭐️总结

__iter__():迭代器,生成迭代对象时调用,返回值必须是对象自己,然后for可以循环调用next方法

__next__():每一次for循环都调用该方法(必须存在

🌟__next__(),iter()详细解释

在 Python 中,使用 __next__()__iter__() 方法可以创建一个迭代器对象。迭代器是一种特殊的对象,它允许我们逐个访问容器中的元素,而不必预先将整个容器加载到内存中。

下面是 __next__()__iter__() 的代码和讲解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        #@summary: 迭代器,生成迭代对象时调用,
        #返回值必须是对象自己,然后for可以循环调用next方法

        return self

    def __next__(self):
    #  @summary: 每一次for循环都调用该方法(必须存在)
        if self.index >= len(self.data):
            # 抛出 StopIteration 异常,表示迭代结束
            raise StopIteration
        value = self.data[self.index]
        self.index += 1
        return value

在上面的代码中,创建了一个名为 MyIterator 的迭代器类。该迭代器类包含以下两个方法:

  • __init__(self, data):构造函数,接受一个参数 data,即需要遍历的数据。
  • __iter__(self):实现可迭代协议返回当前对象的迭代器对象,即返回 self。
  • __next__(self):实现迭代器协议,返回容器中的下一个元素,如果没有更多元素,则抛出 StopIteration 异常。

现在,我们可以使用这个迭代器来遍历任何可迭代对象(如列表、元组、字典等)。下面是使用 MyIterator 迭代器来遍历一个列表的示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_list = [1, 2, 3, 4, 5]
my_iterator = MyIterator(my_list)

for i in my_iterator:
    print(i)

在上面的代码中,我们首先创建了一个包含 5 个元素的列表 my_list。然后,我们创建了一个 MyIterator 对象 my_iterator,并将 my_list 作为参数传递给它。最后,我们使用 for 循环来遍历这个迭代器,从而遍历 my_list 中的所有元素。

通过上述示例代码可以看出,使用 __next__()__iter__() 方法可以创建一个自定义的迭代器对象,并用于遍历任何可迭代的对象

🌟 魔法函数实现原理

Python中的“魔法函数”是一种特殊的函数,其名称以双下划线“__”开头和结尾,例如“init”,“call”等,这些函数在Python的类定义中起到了特殊的作用。魔法函数的实现原理是利用了Python语言的一些特性,即“特殊方法解释器”(SPECIAL METHOD LOOKUP)。

特殊方法解释器的工作方式为:当对象接收到一个消息,但在该对象上没有对应的方法时,会自动查找并调用该对象所在类中的特殊方法,从而实现对该消息的处理。因此,魔法函数的作用就是为Python对象提供了默认的行为或操作,从而方便我们对对象进行操作或控制。

下面以一个简单的例子说明魔法函数的实现原理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyClass:
    def __init__(self, x):
        self.x = x

    def __str__(self):
        return "MyClass with x = {}".format(self.x)

# 创建一个MyClass对象
obj = MyClass(10)

# 调用__str__魔法函数
print(obj)

上述代码定义了一个名为MyClass的类,其中包含了__init__和__str__两个魔法函数。__init__用于初始化对象的属性,__str__用于返回对象的字符串表示形式。在创建MyClass对象并输出时,会自动调用__str__函数并返回对象的字符串表示形式。

这就是魔法函数的实现原理:当创建对象时,会自动调用__init__魔法函数进行初始化操作;当需要获取对象的字符串表示时,会自动调__str__函数。通过使用魔法函数,我们可以很方便地对Python对象进行操作和控制,从而提高程序的效率和可维护性。

除了__init__和__str__这两个常见的魔法函数外,Python语言内置了大量的其他魔法函数,例如:

  • call(self, *args, **kwargs): 使对象可以像函数一样被调用;
  • getitem(self, key): 实现对象的索引访问;
  • setitem(self, key, value): 实现对象的索引赋值;
  • len(self): 返回对象的长度;
  • add(self, other): 实现对象的加法运算;
  • eq(self, other): 判断两个对象是否相等;

通过定义这些内置的魔法函数,我们可以非常方便地实现自己的对象类型,支持各种操作和控制。例如,我们可以自定义一个矩阵类型,并实现其加法、乘法、转置等操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Matrix:
    def __init__(self, data):
        self.data = data

    def __add__(self, other):
        result = []
        for i in range(len(self.data)):
            row = []
            for j in range(len(self.data[i])):
                row.append(self.data[i][j] + other.data[i][j])
            result.append(row)
        return Matrix(result)

    def __mul__(self, other):
        result = []
        for i in range(len(self.data)):
            row = []
            for j in range(len(other.data[0])):
                s = 0
                for k in range(len(self.data[i])):
                    s += self.data[i][k] * other.data[k][j]
                row.append(s)
            result.append(row)
        return Matrix(result)

    def transpose(self):
        result = []
        for i in range(len(self.data[0])):
            row = []
            for j in range(len(self.data)):
                row.append(self.data[j][i])
            result.append(row)
        return Matrix(result)

    def __str__(self):
        s = ""
        for i in range(len(self.data)):
            for j in range(len(self.data[i])):
                s += str(self.data[i][j]) + " "
            s += "\n"
        return s

# 创建两个矩阵
m1 = Matrix([[1, 2], [3, 4]])
m2 = Matrix([[5, 6], [7, 8]])

# 执行加法和乘法操作
print(m1 + 

🌟 我的故事

python学习之路任重而道远,要想学完说容易也容易,说难也难。 很多人说python最好学了,但扪心自问,你会用python做什么了? 刚开始在大学学习c语言,写一个飞行棋的小游戏,用dos界面来做,真是出力不讨好。 地图要自己一点一点画出来,就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
================
|				|
|				|
|===============
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
从此讨厌编程,不想继续学下去。每次作业应付。
算法考试,数据结构考试随便背代码,只求通过。
最后呢?我学会变成了吗?只能对一些概念侃侃而谈,但真的会几行代码,能写出实用工具吗?
答案变得模糊。
所以我们要从现在开始,学好python,不要再糊弄下去!!!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
固态硬盘打不开提示格式化?这样做或许能救回数据
你有没有遇到过这样的情况:明明好端端使用的固态硬盘,突然在某次插入电脑后,弹出系统提示:“磁盘未被格式化,是否立即格式化?”这时候点“是”,怕数据没了;点“否”,盘打不开,里面的文件也没法访问。
用户7704932
2025/06/20
910
固态硬盘打不开提示格式化?这样做或许能救回数据
固态硬盘数据如何恢复「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。 虽说很多朋友都曾使用过硬盘,但是对于硬盘的一些定义,你们却不一定真正的了解,例如固态硬盘是什么?这个概念,你能说的出来吗?我想未必吧!好吧,在说咱们的正题之
全栈程序员站长
2022/11/05
2.9K1
固态硬盘数据如何恢复「建议收藏」
固态硬盘各种受损,数据恢复一个对策,你值得拥有!「建议收藏」
大家好,我是效哥。前几天,效率源发布了福利:(【技术视界】受损固态硬盘(SSD)数据恢复方法)。一时间,很多朋友都找到效哥:“哎呀呀,我的固态硬盘坏了,里面还有我的博士论文”、“刚买的固态硬盘才用半年就坏了,数据库文件急需要恢复”、“固态硬盘做的系统开不了机,桌面上还有财务报表”···
全栈程序员站长
2022/11/05
2.5K0
固态硬盘各种受损,数据恢复一个对策,你值得拥有!「建议收藏」
硬盘数据恢复:避免悲剧,学会这招就能轻松搞定
在这个数字化时代,数据的重要性日益凸显,我们的工作和生活已经和各种电子设备和数据紧密联系在一起。硬盘、U盘、固态硬盘这些看似普通的存储设备,却承载着我们的重要数据,比如,照片、工作文档、视频等。如果这些重要数据意外丢失了,那么无疑将是巨大的损失。硬盘数据丢失问题在平时也很常见,甚至成了常态,我们该如何应对呢?简单的讲,要掌握硬盘数据恢复技巧,关键时刻可以自己挽救丢失的数据。本文,小编会跟大家讨论一个简单实用的硬盘数据恢复方法。
用户7704932
2023/10/19
2490
硬盘数据恢复:避免悲剧,学会这招就能轻松搞定
固态硬盘数据丢失能恢复吗?含泪分享:固态硬盘数据恢复方法
固态硬盘数据丢失能恢复吗?相信很多人在操作和使用固态硬盘的时候,不免会发生一些特殊情况,比如打开固态硬盘后,会询问你是否要对硬盘分区进行格式化。如果我们点击格式化的话,就会造成硬盘内部数据出现丢失的现象。有些时候又是数据无缘无故丢失导致我们一头雾水的同时又手足无措。总之无论是因为什么而导致的丢失数据,都要想办法找回来!
全栈程序员站长
2022/11/08
6.4K1
固态硬盘数据丢失能恢复吗?含泪分享:固态硬盘数据恢复方法
固态硬盘坏了怎么恢复数据恢复不了_笔记本固态硬盘坏了数据能恢复吗
今天的这篇经验和大家聊一聊关于固态硬盘坏了怎么恢复数据恢复的问题,希望能够帮助到有需要的朋友。
全栈程序员站长
2022/09/30
2.5K0
固态硬盘坏了怎么恢复数据恢复不了_笔记本固态硬盘坏了数据能恢复吗
固态硬盘寿命一般多少年?
随着科技的飞速发展,固态硬盘(SSD)已经成为现代计算机存储设备的重要组成部分。相比传统的机械硬盘(HDD),固态硬盘具有速度更快、抗震性强、功耗低、噪音小等优点。不过,很多人对固态硬盘的寿命依然存在疑虑。本期内容就要和大家深度聊一聊固态硬盘寿命的方方面面。
用户7704932
2024/10/12
6760
固态硬盘寿命一般多少年?
固态硬盘故障表现及数据恢复方案表_ssd硬盘数据恢复得了吗
固态硬盘出现硬件损坏时,通常是NAND控制芯片损坏造成的,主控芯片是固态硬盘的存取控制芯片,是固态硬盘的灵魂所在。相比于闪存颗粒有限的擦写寿命,在闪存颗粒依然坚挺的时候,主控芯片却损坏的概率反而要高得多,据统计,95%以上的固态硬盘故障,都是由于主控芯片发生故障引起的。
全栈程序员站长
2022/11/05
2.5K0
为什么现在的监控系统容易硬盘坏?附原理解析
分享一则技术贴,为什么现在的监控系统容易硬盘坏? 电脑不能强制关机,否则会损坏硬盘——相信这是很多人关于电脑使用的最初认知。在如下所示的例子中就有多次强制断电,从而导致存储硬盘严重损坏、难以恢复的情
刘盼
2018/03/16
2.1K0
为什么现在的监控系统容易硬盘坏?附原理解析
市面上多种流行的固态硬盘产品存在硬盘加密机制绕过漏洞
近期,荷兰奈梅亨拉德堡德大学研究人员发现,市面上多种流行的固态硬盘( SSD drive)存在加密机制可绕过漏洞,无需密码即可绕过硬盘加密措施,从而获取到硬盘中的数据内容。
FB客服
2018/12/20
1.6K0
市面上多种流行的固态硬盘产品存在硬盘加密机制绕过漏洞
移动硬盘文件丢失怎么找回来?3个常用方法总结
随着移动硬盘的普及,移动硬盘文件丢失的问题也越发频繁。移动硬盘文件丢失怎么找回来?本文将从移动硬盘数据存储和删除的机制出发,用浅显易懂的语言,为大家详细介绍移动硬盘数据的恢复方法。话不多说,一起来看看吧!
一个专注于数据的号
2025/06/11
560
固态硬盘不能恢复吗_固态硬盘资料能恢复吗
固态硬盘(SSD)凭借超高速的读写速度在高端玩家中颇受欢迎,但是SSD硬盘也暴露出一些不成熟的表现,之前已有过固件门、性能下降等例子。Techgage网站最新的测试显示SSD硬盘在数据恢复方面遇到了新的挑战,这一问题在支持TRIM指令的固态硬盘上尤为严重。有鉴于此,编辑将这篇文章编译过来希望能引起玩家的重视。目前这一问题还没有别的评测加以佐证,笔者手头也没有固态硬盘可重复验证,希望正在使用固态硬盘的玩家在评论中多多探讨,并注意备份自己的重要数据。
全栈程序员站长
2022/11/05
2.6K0
如何将硬盘克隆到另一个硬盘或是固态硬盘?(免费)
今天的文章是关于硬盘克隆,给大家介绍一些相关术语、克隆硬盘的好处、相关工具软件以及在Windows电脑上克隆硬盘的具体步骤。
用户7704932
2025/01/24
3600
如何将硬盘克隆到另一个硬盘或是固态硬盘?(免费)
移动硬盘数据恢复 详细操作指南 (6种方法)
移动硬盘是我们平时经常使用的数据存储设备之一,移动硬盘容量大、便携、使用方便,很多用户都喜欢使用移动硬盘作为辅助存储设备。但是,我们平时移动硬盘的时候也会遇到数据丢失问题,不论是由于误删除、格式化、还是硬盘打不开,数据丢失都会给我们带来不小的困扰。好消息是,很多情况下,移动硬盘丢失的数据是可以恢复的。本文将给大家详细介绍移动硬盘数据恢复的完整过程,帮助大家有效应对数据丢失问题。
用户7704932
2024/08/30
3330
移动硬盘数据恢复 详细操作指南 (6种方法)
固态硬盘打不开盘符需要格式化怎么办?
在现代计算机系统中,固态硬盘(SSD)已经成了主流的存储设备之一。固态硬盘有读写速度快、功耗低、抗震能力强等优点,很受用户喜爱。然而,我平时使用电脑的时候,同样会遇到固态硬盘无法打开的问题:在文件管理器中尝试打开固态硬盘的盘符时,系统却弹出提示框,告诉我们需要将其格式化。遇到这种情况时,很多人可能会很焦虑,因为这个问题意味着无法访问里面的数据了。
用户7704932
2024/03/06
3640
固态硬盘打不开盘符需要格式化怎么办?
一分钟教会你固态硬盘数据恢复方法
不少人都知道,固态硬盘上丢失了数据是很难恢复的,但是也有一些数据丢失的情况,是可以尝试恢复数据的,比如说误删除分区、分区变为RAW状态。针对这些情况,今天呢,小编给大家分享一下固态硬盘数据恢复方法,我们需要借助一款好用的数据恢复软件——易我数据恢复,该软件可深度扫描磁盘数据,根据删除标记、文件目录信息和文件内容等三种方式分别检索文件,搜寻更全面。
全栈程序员站长
2022/07/22
3.7K0
一分钟教会你固态硬盘数据恢复方法
联想st510开卡软件_无力吐槽的一单联想ST510固态硬盘数据恢复
接苏州IT服务商客户送修一块联想ST510 固态硬盘需要恢复数据,故障现象为SSD可以正常识别,而且识别的速度也是很快的!,我们接上PC3000访问第一扇区显示代码是错误的,然后读取其它扇区就BSY状态了,必须从新断电加电才可以读取!(从经验判断这块SSD的主控应该是SM2258XT或SM2256K,PC3000 SSD加载恢复的速度正常是8M每秒左右)由于这块硬盘转手次数太多(起码转了4手)也没有办法与直接客户取得联系,这位服务商给我们的要求就是硬盘坏了把数据恢复出来,硬盘不能拆!硬盘竟然不让拆??没问题这就是这位IT服务商给我的回答!!具体要恢复什么不知道!无论问什么也多是不知道!这种业务操作起来真心太累!所以只能按坏块方式进行恢复!进度又慢而且数据的重要性只能我们自己去判断!工程师使用PC3000 DE进行物理读取方式设置好参数,与读取错误自动批处理,尽量多的读取一点数据出来,这块SSD前后恢复共计用时8天左右,恢复期间一直催促,恢复出来我们认为重要的数据交付IT服务商客户!因为这块硬盘在前几个人手上已经折腾了近1周以上,所以客户对数据的时效性是
全栈程序员站长
2022/09/28
5600
硬盘检测工具哪个好?5个工具供你选!
硬盘作为计算机存储数据的主要设备,其健康状况直接影响到数据的安全和计算机的性能。硬盘检测工具可以帮我们及时发现硬盘故障、预测硬盘寿命、修复坏道等问题。那么,市面上众多的硬盘检测工具中,究竟哪款工具更好呢?本文将介绍几款热门的硬盘检测工具,并进行综合评测,以便您选择最适合的工具。
用户7704932
2024/07/03
2.3K0
硬盘检测工具哪个好?5个工具供你选!
电脑开机读不到固态硬盘怎么办_电脑读不到固态硬盘怎么办
电脑重启后发现电脑检测不出固态硬盘,这种情况大家不要慌张,下面就由学习啦小编跟大家分享电脑重启后读不到固态硬盘该怎么办,欢迎大家来阅读学习。
全栈程序员站长
2022/09/28
10.3K0
电脑开机读不到固态硬盘怎么办_电脑读不到固态硬盘怎么办
销毁电脑硬盘数据的方法
美国电视剧《越狱》里有一个情节,迈克尔·斯科菲尔德将包含数据资料的硬盘扔到河里,想用这种方法销毁硬盘数据,最后,丢到河中的硬盘最终却被警察找到了,有数据取证专家表示,如果硬盘只是泡了水,数据恢复工作其实并不难,最终硬盘的数据被恢复了大部分。
李洋博客
2021/06/15
1.6K0
推荐阅读
相关推荐
固态硬盘打不开提示格式化?这样做或许能救回数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验