我有以下问题,有一个读取大文件(几 Mb)的函数,内容如下:
0x05 0x00 0x00 0x00 0xCF 0x00 0x00 0x00 ; ..........
0xCF 0x00 0x00 0x00 0x22 0x00 0x00 0x00 ; ......"...
0x51 0x84 0x07 0x00 0x02 0x00 0x01 0x00 ; ..Q.......
我的函数必须只读取十六进制值,并忽略“;”以下字符直到行尾。
我需要的是第一行的数据
“0x05 0x00 0x00 0x00 0xCF 0x00 0x00 0x00”
我尝试了两种方法,一种是用一个单独的文件来实现这个功能
def ReadFileAsList(fileName):
fileName = "2Output.txt"
fileContentStr = ""
with open(fileName,'r') as f:
for line in f:
fileContentStr += line.split(';')[0]
fileContentList = fileContentStr.split()
return fileContentList
第二种方法,当这些行直接在我的主 .py 文件中时
fileName = "2Output.txt"
fileContentStr = ""
with open(fileName,'r') as f:
for line in f:
fileContentStr += line.split(';')[0]
fileContentList = fileContentStr.split()
第二种方法非常快,第一种方法(在单独的文件中使用单独的函数)非常慢,我错过了什么? 感谢您的任何提示
最佳答案
存储局部变量比存储全局变量更快。局部变量存储在固定大小的数组中,而全局变量存储在真正的字典中。
这是更深入的链接 answer
关于python - 单独文件中的功能较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182894/