请问为什么执行一个简单的for语句就卡死,没有任何报错.....
Python:Python 3.11.6 (tags/v3.11.6:8b6ee5b, Oct2 2023, 14:57:12) on win32
Pyside6:
Name: PySide6
Version: 6.6.2
Summary: Python bindings for the Qt cross-platform application and UI framework
Home-page:
Author:
Author-email: Qt for Python Team <pyside@qt-project.org>
License: LGPL
Location: D:\Tools\Python\Lib\site-packages
Requires: PySide6-Addons, PySide6-Essentials, shiboken6
请问为什么执行下列红色的for语句就会卡死?没有任何报错,就是卡半天,然后说程序失去响应。。。。
def exclude_rows_and_cols(self, exclude_rows_and_cols):
if self.File_Type == 'xls':
file_name = "123.xls"
# 拼接文件路径
file_path = os.path.join(self.File_Path, file_name)
Exclud_Book = xlrd.open_workbook(file_path)
else:
file_name = "123.xlsx"
# 拼接文件路径
file_path = os.path.join(self.File_Path, file_name)
Exclud_Book = load_workbook(file_path)
print('《123》共有', len(Exclud_Book.sheet_names()), '个工作表(sheet)。名称分别为:', Exclud_Book.sheet_names())
for sheet_name in Exclud_Book.sheet_names(): 可能是因为打开的Excel文件非常大,导致程序执行for循环时需要处理大量的数据,而这些数据量过大导致程序卡死。你可以尝试使用以下方法解决这个问题:
1. 确保你的计算机足够强大,有足够的内存和处理能力来处理大型文件。
2. 尝试使用更高效的库来读取Excel文件,例如pandas库,它可以更快地读取大型Excel文件。
3. 如果文件中的数据量确实很大,并且你只需要部分数据,可以考虑使用分块读取的方法,逐块处理数据,而不是一次性全部加载。
4. 检查你的代码中是否有其他地方造成死循环或者无限循环,导致程序卡住。
希望以上方法能帮助到你解决问题!如果问题仍然存在,请提供更多的代码和环境信息,以便我们更好地帮助你。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-14 14:55
可能是因为打开的Excel文件非常大,导致程序执行for循环时需要处理大量的数据,而这些数据量过大导致程序卡 ...
数据库并不大。。。。也才两个sheet、几十条数据
关掉这一句时,执行程序的其他部分都很正常;
只有执行到这一句时,就卡住了。。。。。 yxxxzx123 发表于 2024-03-14 14:58
数据库并不大。。。。也才两个sheet、几十条数据
...
抱歉,我误解了你的问题。根据你提供的代码,我看到你使用的是xlrd和openpyxl库来读取Excel文件。有时候这些库在处理某些特殊格式的Excel文件时可能会导致程序卡死。
为了解决这个问题,可以尝试以下方法:
1. 确保你的xlrd和openpyxl库是最新的版本,可以通过pip升级它们:
pip install --upgrade xlrd openpyxl
2. 尝试使用其他的Excel处理库,例如pandas库。Pandas库对于大型Excel文件的读取速度更快,且操作更简洁。你可以尝试以下代码:
import pandas as pd
if self.File_Type == 'xls':
file_name = "123.xls"
else:
file_name = "123.xlsx"
file_path = os.path.join(self.File_Path, file_name)
df = pd.read_excel(file_path, sheet_name=None)
sheet_names = df.keys()
for sheet_name in sheet_names:
sheet_data = df
# 处理每个工作表的数据
这样,你可以通过`read_excel`函数一次性读取整个Excel文件,并以字典形式返回各个工作表的数据,然后可以对每个工作表的数据进行处理。
希望以上方法能够解决你的问题。如果还有其他疑问,请提供更多的代码和环境信息,以便我们更好地帮助你。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 换了pandas 库,还是一到for语句就卡死。。。
什么原因啊? yxxxzx123 发表于 2024-03-14 15:16
换了pandas 库,还是一到for语句就卡死。。。
...
非常抱歉听到你的问题仍然存在。如果在使用pandas库之后仍然卡死,问题可能不在于Excel文件的读取,而是在循环过程中出现了某种问题。这可能有以下几个原因:
1. 内存问题:如果你的数据量非常大,循环过程中可能会占用大量的内存,导致程序卡死。你可以尝试限制一次性加载的数据量,例如逐行或逐批读取数据进行处理,而不是一次性全部加载。
2. 循环逻辑问题:检查一下你在循环体内的代码逻辑是否正确。特别是在处理每个工作表数据的过程中,确保没有陷入无限循环或者其他死循环。
3. 其他耗时操作:检查一下在循环内部是否有其他耗时操作,例如网络请求、复杂的计算等。这些操作可能会导致程序卡死。
4. 外部依赖问题:检查一下循环内部是否有调用其他函数或模块的操作,这些函数或模块可能存在问题,导致程序卡死。
针对以上问题,你可以逐步排查并测试代码。通过在循环内部打印日志或使用调试工具来定位问题所在。另外,提供更多的代码和相关环境信息可以帮助我们更好地理解问题,以便给出更具体的解决方案。祝你好运!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 3. 其他耗时操作:检查一下在循环内部是否有其他耗时操作,例如网络请求、复杂的计算等。这些操作可能会导致程序卡死。
有没有网络请求要怎么复查?
页:
[1]