python讀取hid(python讀取hive數據庫)

本文目錄一覽:

Python如何從文件讀取數據

1.1 讀取整個文件

要讀取文件,需要一個包含幾行文本的文件(文件PI_DESC.txt與file_reader.py在同一目錄下)

PI_DESC.txt

3.1415926535

8979323846

2643383279

5028841971

file_reader.py

with open(“PI_DESC.txt”) as file_object:

contents = file_object.read()

print(contents)

我們可以看出,讀取文件時,並沒有使用colse()方法,那麼未妥善的關閉文件,會不會導致文件收到損壞呢?在這裡是不會的,因為我們在open()方法前邊引入了關鍵字with,該關鍵字的作用是:在不需要訪問文件後將其關閉

1.2文件路徑

程序在讀取文本文件的時候,如果不給定路徑,那麼它會先在當前目錄下進行檢索,有時候我們需要讀取其他文件夾中的路徑,例如:

現在文件PI_DESC.txt存儲在python目錄的子文件夾txt中

那麼我們讀取文本內容的代碼得修改為:

with open(“txt\PI_DESC.txt”) as file_object:

contents = file_object.read()

print(contents)

給open參數傳遞的參數得給相對路徑

在Windows中,使用反斜杠(\),但是由於python中,反斜杠被視為轉義字符,在Windows最好在路徑開頭的單(雙)引號前加上r

相對路徑:即相對於程序文件的路徑

絕對路徑:即文本在硬盤上存儲的路徑

使用絕對路徑的程序怎麼寫呢 ?

with open(r”D:\python\txt\PI_DESC.txt”) as file_object:

contents = file_object.read()

print(contents)

1.3逐行讀取

讀取文件時,可能需要讀取文件中的每一行,要以每一行的方式來檢查文件或者修改文件,那麼可以對文件對象使用for循環

file_path = ‘txt\PI_DESC.txt’with open(file_path) as file_object:

for line in file_object:

print(line)

程序運行結果如下:

通過運行結果我們可以看出,打印結果中間有很多空白行,這些空白行是怎麼來的呢?因為在這個文件中,每行的末尾都有一個看不見的換行符,而print語句也會加一個換行符,因此每行末尾就有2個換行符:一個來自文件,另外一個來自print,消除這些換行符,只需要使用方法rstrip()

file_path = ‘txt\PI_DESC.txt’with open(file_path) as file_object:

for line in file_object:

print(line.rstrip())

打印結果

通過運行結果我們可以看出,打印結果中間有很多空白行,這些空白行是怎麼來的呢?因為在這個文件中,每行的末尾都有一個看不見的換行符,而print語句也會加一個換行符,因此每行末尾就有2個換行符:一個來自文件,另外一個來自print,消除這些換行符,只需要使用方法rstrip()

file_path = ‘txt\PI_DESC.txt’with open(file_path) as file_object:

for line in file_object:

print(line.rstrip())

打印結果

1.4創建一個包含文件各行內容的列表

使用關鍵字with時,open()返回的文件對象只能在with代碼塊可用,如果要在with代碼塊外訪問文件的內容,可在with塊中將文件各行存儲在一個列表,並在with代碼塊外使用該列表

file_path = ‘txt\PI_DESC.txt’with open(file_path) as file_object:

lines = file_object.readlines()for line in lines:

print(line.rstrip())

1.5使用文件的內容

在上面一節中我們提到把數據提取到內存中,那麼我們就可以對數據進行隨心所欲的操作了

需要:將圓周率連在一起打印出來(刪除空格),並打印其長度

file_path = ‘txt\PI_DESC.txt’with open(file_path) as file_object:

lines = file_object.readlines()pi_str = ”for line in lines:

pi_str += line.strip()print(pi_str.rstrip())print(len(pi_str.rstrip()))

file_path = ‘txt\PI_DESC.txt’with open(file_path) as file_object:

lines = file_object.readlines()pi_str = ”for line in lines:

pi_str += line.strip()print(pi_str.rstrip())print(len(pi_str.rstrip()))

注意最後print語句並沒有縮進,如果是縮進的話就會每取一行打印一次

打印效果如下

python 讀取文件

#!/usr/bin/python2.7

import random,re

f0=file(‘proxys.txt’,’r’)

dat0=f0.readlines()

f0.close()

#提取含有$1sec的行(我理解你想按sec的大小排序。)

dat1=[]

for i in dat0:

dat1.append((i,re.search(r’\$(\d+)sec’,i).group(1)))

#現在dat1裡面的數據是在原來的每一行前面加了一列sec的值。

dat2=[]

for i in dat1:

if i[0]==1:

dat2.append(i[1])

#現在取出了所有sec==1的行,隨機取一行

dat3=random.choice(dat2)

c1=re.search(r'((\d{1,3}\.?){4}):(\d+)’,dat3).group(1)

c2=re.search(r'((\d{1,3}\.?){4}):(\d+)’,dat3).group(3)

python 讀取大文件數據怎麼快速讀取

python中讀取數據的時候有幾種方法,無非是read,readline,readlings和xreadlines幾種方法,在幾種方法中,read和xreadlines可以作為迭代器使用,從而在讀取大數據的時候比較有效果.

在測試中,先創建一個大文件,大概1GB左右,使用的程序如下:

[python] view plaincopyprint?

import os.path

import time

while os.path.getsize(‘messages’) 1000000000:

f = open(‘messages’,’a’)

f.write(‘this is a file/n’)

f.close()

print ‘file create complted’

在這裡使用循環判斷文件的大小,如果大小在1GB左右,那麼結束創建文件。–需要花費好幾分鐘的時間。

測試代碼如下:

[python] view plaincopyprint?

#22s

start_time = time.time()

f = open(‘messages’,’r’)

for i in f:

end_time = time.time()

print end_time – start_time

break

f.close()

#22s

start_time = time.time()

f = open(‘messages’,’r’)

for i in f.xreadlines():

end_time = time.time()

print end_time – start_time

break

f.close()

start_time = time.time()

f = open(‘messages’,’r’)

k= f.readlines()

f.close()

end_time = time.time()

print end_time – start_time

使用迭代器的時候,兩者的時間是差不多的,內存消耗也不是很多,使用的時間大概在22秒作用

在使用完全讀取文件的時候,使用的時間在40s,並且內存消耗相當嚴重,大概使用了1G的內存。。

其實,在使用跌倒器的時候,如果進行連續操作,進行print或者其他的操作,內存消耗還是不可避免的,但是內存在那個時候是可以釋放的,從而使用迭代器可以節省內存,主要是可以釋放。

而在使用直接讀取所有數據的時候,數據會保留在內存中,是無法釋放這個內存的,從而內存卡死也是有可能的。

在使用的時候,最好是直接使用for i in f的方式來使用,在讀取的時候,f本身就是一個迭代器,其實也就是f.read方法

原創文章,作者:R78TV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130512.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
R78TV的頭像R78TV
上一篇 2024-10-03 23:28
下一篇 2024-10-03 23:28

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論