日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python读取大文件目录_65.Python读取大文件

發布時間:2023/12/15 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取大文件目录_65.Python读取大文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方式一

import os

path = r"C:\Users\yzt\Desktop\work\InfosecTestPlatform\libs\Log\mainline1-nohup.log"

#####################

"""

file.seek(off, whence=0):

從文件中移動off個操作標記(文件指針),正往結束方向移動,負往開始方向移動。

如果設定了whence參數,就以whence設定的起始位為準,0代表從頭開始,1代表當前位置,2代表文件最末尾位置。(注意都是相對位置)

"""

#####################

f = open(path, "r", encoding='utf-8')

print(f.tell())

f.seek(10)

print(f.tell())

f.seek(3)

print(f.tell())

#####################

f = open(path, "rb")

size = os.path.getsize(path)

print(size)

print(f.tell()) # 獲取文件指針位置

# print(f.tell())

f.seek(10, 1) # 1表示正續移動, 1表示當前位置,10表示想后移動10個字符

print(f.tell())

f.seek(-15, 2) # 2表示倒敘移動,2表示從文件末尾開始,-15表示向前移動15個字符

print(f.tell())

print(f.readlines()[-1].decode()) # 這個時候光標移動到了文件的-15個字符處,直接讀取其后面的文字(注意需要使用decode解碼)

# 方式一: 寫一個函數使用,我需要讀取文件的后0.15M(可以自行調節)數據返給前端

def read_log(path):

log_read_size = 150 * 1024 # 默認讀取0.5M數據(文件的最后0.1M大約500-100行)

size = os.path.getsize(path)

logFile = open(path, 'rb')

if size > log_read_size:

print(size, "*" * 50)

logFile.seek(0, 2)

logFile.seek(-log_read_size, 2)

str1 = logFile.read().decode()

print(len(str1))

return str1

else:

return logFile.read().decode()

read_log(path)

方式二

import os

path = r"C:\Users\yzt\Desktop\work\InfosecTestPlatform\libs\Log\mainline1-nohup.log"

def tail(inputfile):

"""這個函數也可以做到讀取文件后幾行數據,不足之處需要自己改"""

file_size = os.path.getsize(inputfile)

block_size = 1024

dat_file = open(inputfile, 'r')

last_line = ""

if file_size > block_size:

maxseekpoint = (file_size // block_size) # 最為seek的最大值

dat_file.seek((maxseekpoint - 1) * block_size)

elif file_size:

# maxseekpoint = block_size % file_size

dat_file.seek(0, 0)

lines = dat_file.readlines()

if lines:

# last_line = lines[-1].strip()

# 最后兩行,N行就改數字,即可

last_line = lines[-2:]

# print "last line : ", last_line

dat_file.close()

return last_line

錯誤方式(其實一開始是好的然后過了一周用不了了我很懵逼)

1G文件讀取后五千行

import os

from InfosecTestPlatform import settings

file_url = os.path.join(settings.BASE_DIR, "libs/Log/mainline1-jmeter.log")

print(os.path.exists(file_url))

fp = open(file_url, 'r', encoding='utf-8')

# 我將1G的文件,讀出來放在一個生成器中

file_list = [line for line in fp]

# 使用列表反向切片方式讀取,后5000行

file_last_5000 = file_list[:-5001:-1]

# 由于數據是方向的所有再次方向讀取,還原為正向

file_last = file_last_5000[::-1]

# 之后拼接返回

str1 = "".join(file_last)

# 下面是我是用循環寫了一個1G的日志文件

# fp_w = open(file_url, 'w', encoding='utf-8')

# for i in range(500):

# fp_w.write("")

總結

以上是生活随笔為你收集整理的python读取大文件目录_65.Python读取大文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。