91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

seek引發的python文件讀寫的問題及解決

發布時間:2020-09-11 19:31:10 來源:腳本之家 閱讀:162 作者:bainianminguo 欄目:開發技術

我的需求很簡單,就是統計一下我的安裝腳本執行的次數和時間,格式是這樣的

install_times:1|install_times:2018-09-03 15:58:46
install_times:2|install_times:2018-09-03 15:58:50
install_times:3|install_times:2018-09-03 15:58:54

首先我需要判斷一下文件是否為空,我開始是這樣寫的

import time
import os
file_list = []
tags = False
with open("install_hadoop.txt", "r", encoding="utf-8") as f:
  flag = bool(f.readline())
  # obj = True
  # f.seek(0)
  if flag:
    tags = True
    for obj in f:
      tmp_list = obj.split("|")
      file_list.append(tmp_list)
    last_times = int(file_list[-1][0].split(":")[1]) + 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")
  else:
    last_times = 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")

先通過f.readline()讀一行文件出來,判斷返回的對象是否為真,如果為真,則認為文件不為空,則繼續往下走,這里有個問題就是,當我讀出來一行后,我的指針的位置到了第一行的末尾,等下在去讀文件,直接從第二行去讀數據,本來我這里是要讀到所有的數據,但是由于seek導致我的數據是從第二行開始的,所以得出來的結果就不對

這里可以有2種辦法解決

1、通過f.readline()讀一次文件之后,在f.seek(0),把指針在設置回到最開始的位置

with open("install_hadoop.txt", "r", encoding="utf-8") as f:
  flag = bool(f.readline())
  # obj = True
  <strong> f.seek(0)</strong>
  if flag:
    tags = True
    for obj in f:
      tmp_list = obj.split("|")
      file_list.append(tmp_list)
    last_times = int(file_list[-1][0].split(":")[1]) + 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")
  else:
    last_times = 1
    last_time = time.strftime("%Y-%m-%d %H:%M:%S")

2、修改判斷文件是否為空的方法,采用os.path.getsize的方法來判斷文件是否為空

with open("install_hadoop.txt", "r", encoding="utf-8") as f:<br>  flag = bool(f.readline())<br>  # obj = True<br>  f.seek(0)<br>  <strong>print(os.path.getsize("install_hadoop.txt"))</strong><br>  if flag:<br>    tags = True<br>    for obj in f:<br>      tmp_list = obj.split("|")<br>      file_list.append(tmp_list)<br>    last_times = int(file_list[-1][0].split(":")[1]) + 1<br>    last_time = time.strftime("%Y-%m-%d %H:%M:%S")<br>  else:<br>    last_times = 1<br>    last_time = time.strftime("%Y-%m-%d %H:%M:%S")

至此,這個問題被解決,同時也對python的文件操作有了更深的理解,也明白了python設置seek的作用

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃江县| 玉林市| 延吉市| 泰安市| 札达县| 永胜县| 长沙县| 扬州市| 武山县| 湘阴县| 晋城| 阿合奇县| 金乡县| 聊城市| 花莲县| 万盛区| 蚌埠市| 科尔| 平遥县| 商城县| 蓬溪县| 讷河市| 涟源市| 那坡县| 陕西省| 墨竹工卡县| 神木县| 依安县| 报价| 托里县| 凤庆县| 阿合奇县| 鲁甸县| 界首市| 武强县| 阜城县| 盱眙县| 衡水市| 绵阳市| 漾濞| 祁东县|