python .read()方法的檔案指標的問題
在學習檔案讀取的時候,先驗證file.read():
txt檔案:
驗證結果:
再驗證file.readline()或者file.readlines()方法時,會出現以下情況:
程式碼:
if __name__ == '__main__':
file123 = open('123.txt')
file123.read()
print(file123.readline())
結果:
可以看到這裡是空的。
只是為啥呢,這裡就設計到檔案指標的問題了。檔案指標是一個檔案內容的標記內容,表示我讀取這個檔案到哪了。那麼我們在使用完read()之後使用readline()為什麼為空呢。這裡的猜想就是檔案指標指到了檔案的末尾,驗證:
if __name__ == '__main__':
file123 = open('123.txt')
file123.read()
print(file123.tell())
可以看到,檔案指標到了64,為什麼是六十四呢,我們可以數一下檔案的字數,23個漢字,5箇中文標點,都佔兩個位元組,28*2 = 56,那還有8個位元組哪來的,原來檔案裡的換行是佔兩個位元組的,相當於’\n’。這樣就是64個了。
迴歸正題,通過上面的驗證,我們可以得出結論,在使用了.read()方法之後,檔案指標會指向檔案最後,這樣後面再想操作就沒有任何內容了。
解決辦法如下:
1、可以通過seek()方法將檔案指標移到檔案開頭:
if __name__ == '__main__':
file123 = open('123.txt')
file123.read()
print(file123.tell())
file123.seek(0.0)
print(file123.tell())
print(file123.readline())
結果:
2、在執行完read()方法之後將檔案重新開啟(比較蠢的方法,一般不採用)
if __name__ == '__main__':
file123 = open ('123.txt')
file123.read()
print(file123.tell())
file123 = open('123.txt')
print(file123.tell())
print(file123.readline())
結果和方法一相同。
請各位大佬指教。
相關推薦
python .read()方法的檔案指標的問題
在學習檔案讀取的時候,先驗證file.read(): txt檔案: 驗證結果: 再驗證file.readline()或者file.readlines()方法時,會出現以下情況: 程式碼: if __name__ == '__main__':
Python文字操作---檔案指標
1.seek():跳到指定的檔案位置 # coding:utf-8 #遞迴檢索目錄下的檔名稱(列表) allfile = [] # 如果沒有這個檔案,新建一個檔案,檔名為:myAllfile.txt
python file.seek() 檔案指標
轉自 http://www.cnblogs.com/blogCblog/p/5597973.html 當我們讀取檔案內容時,並不能重複的讀取,比如一個blogCblog.txt檔案裡有blogCblog內容,用兩個read()方法讀取blogCblog.txt的內容,會
python讀取大檔案的方法 python計算檔案的行數和讀取某一行內容的實現方法
python計算檔案的行數和讀取某一行內容的實現方法 :最簡單的辦法是把檔案讀入一個大的列表中,然後統計列表的長度.如果檔案的路徑是以引數的形式filepath傳遞的,那麼只用一行程式碼就可以完成我們的需求了: 1、http://blog.csdn.net/shudaq
Python實現下載檔案的三種方法
下面來看看三種方法是如何來下載zip檔案的:方法一: import urllib print "downloading with urllib" url = 'http://www.jb51.net//test/demo.zip' urllib.urlretrieve(url, "demo.zip")
python讀取文字檔案的三種方法
參考連結 python讀取文字檔案的內容,有三種方法。 read()、readline()、readlines() read() read()是最簡單的一種方法,一次性讀取檔案的所有內容放在一個大字串中,即記憶體中。 file=open('test.txt') try:
python建立Excel檔案資料的方法
# -*- coding: utf-8 -*-# @Time : 2018/12/6 17:10# @Author : suchao# @Disc: : 生成10000條Excel資料# @File : 1000data.py# @Software: PyCharmimport xlrd ,
python的csv檔案讀寫及避免出現空行的方法
使用列表生成csv >>> import csv >>> keys=['a','b','c','d'] >>> data=[[1,2,3,4],[5
python中讀取檔案函式read()、readline()、readlines()的區別
python中讀取檔案函式–>read()、readline()、readlines()的區別 關於以上三種函式的區別,下面使用程式碼將執行結果進行進行比較: 先建立一個00.txt的文字檔案,檔案內容如下: 111111111 222222222 333
Python操作csv檔案方法
DictReader字典讀取csv指定列的內容 想要讀取“timer Start 8”的內容,或者獲取該行其他列的資訊,例如獲取該行“RO timer expire”列對應的內容: with open(csvpath,'rb') as csvfile: rea
python檔案的基本操作之控制檔案指標
f.tell #每次統計都是從檔案頭到當前指標所在位置####只要在t 模式在是read(n)n代表字元個數,除此之外的檔案指標都是以bytes為單位 # f=open('c.txt',mode='rt',encoding='utf-') # print(f.read(3)) # f
[python]生成pyc檔案的方法
不希望別人看到寫好的python指令碼的原始碼,可以將python檔案編譯成pyc檔案,這樣使用者就無法看到原始碼了,方法很簡單import py_compile py_compile.compile(__file__)
python寫入csv檔案的幾種方法總結
最常用的一種方法,利用pandas包import pandas as pd #任意的多組列表 a = [1,2,3] b = [4,5,6] #字典中的key值即為csv中列名 dataframe = pd.DataFrame({'a_name':a,'b_nam
python高手之路python處理excel檔案(方法彙總)
用python來自動生成excel資料檔案。python處理excel檔案主要是第三方模組庫xlrd、xlwt、xluntils和pyExcelerator,除此之外,python處理excel還可以用win32com和openpyxl模組。 方法一: 小羅問我怎麼從
python:在csv檔案每行末寫入一列——方法1
with open(os.path.join(os.path.dirname(__file__), "file1")) as csvFile: rows = csv.reader(csvFile) with open(os.path.join(os.path.
Python實現跨檔案全域性變數的方法
原文地址: https://www.cnblogs.com/rnckty/p/7722603.html Python 中 global 關鍵字可以定義一個變數為全域性變數,但是這個僅限於在一個模組(py檔案)中呼叫全域性變數,在另外一個py檔案 再次使用 global
linux c通過檔案描述符以及write和read方法對檔案進行讀寫
1、write和read方法講解 #include<unistd.h> ssize_t read(int fd, void *buf,size_t count); fd為檔案描述符,buf
資料集生成方法:Python讀取txt檔案中的URL路徑並下載圖片
1.資料來源: 可針對自己的模型需要在imagenet官網上下載所需類別對應的txt檔案。 2.資料下載: import os from urllib.request import urlretrieve def download(): catego
Python實現修改檔案內容的方法分析
本文例項講述了Python實現修改檔案內容的方法。分享給大家供大家參考,具體如下:1 替換檔案中的一行1.1 修改原檔案① 要把檔案中的一行Server=192.168.22.22中的IP地址替換掉,因此把整行替換。 data = ''with open('zhai.c
python 學習方法
模塊 經驗 utili 交互 class 印象 www 進行 os.path 依據本人的學習經驗,我總結了下面十點和大家分享: 1)學好python的第一步。就是立即到www.python.org站點上下載一個python版本號。我建議剛開始學習的人,不要下載具有ID