# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Hugolinhj
'''
對檔案的操作流程
1、打開檔案、得到檔案句柄并賦值給一個變數
2、通過句柄對檔案進行操作
3、關閉檔案
'''
'''
data = https://www.cnblogs.com/mingyw/p/open('yesterday',encoding='utf-8').read() #是指將記憶體復制到變數來修改,無意義,正常格式應該為以下
#windows默認編碼格式是GBK,py是utf-8,要用encoding指定‘utf-8’打開,
f = open('yesterday','r',encoding='utf-8')
data = https://www.cnblogs.com/mingyw/p/f.read()
data2 = f.read()
data2 = f.read()
print(data)
print('data2 ===>',data2)
#這里不打因data2不是沒有列印,而是檔案的所讀游標已經指到檔案底部,沒能在指會檔案首部,
w = open('yesterday2','w',encoding='utf-8')#檔案句柄,就是該檔案的記憶體物件,包含檔案名、字符集、大小、描述,規范:加'r'默認不加為讀模式,注!!!:’w‘直接創建空白檔案,
w.write('wo ai BeiJingTianAna\n')
w.write('wo ai wulingmin')
print(w)
a = open('yesterday3','a',encoding='utf-8')# 加'a'是append,追加的意思,不能讀,
a.write('wo ai BeiJingTianAna\n')
a.write('wo ai wulingmin\n')
print(a)
a.close()
#關閉檔案
w.close()
f.close()
f = open('yesterday','r',encoding='utf-8')
for i in range(5):
print(f.readline())
#讀一行,用for 陳述句讀5行
f = open('yesterday','r',encoding='utf-8')
for index,line in enumerate(f.readlines()):#找下標 index,
if index == 1:
print('------------------')
continue # 不操作,重新判斷,
elif index == 11:
print('==================')
break #退出回圈,
print(line.strip())
#列印檔案中跳過第2行以及到第12行退出,
#注:readlines只能讀小檔案,不建議讀大檔案,因為是直接全部讀取到記憶體中,占記憶體大,
#當想列印檔案中的行數,建議采用以下方式:
#標準:
f = open('yesterday','r',encoding='utf-8')
count = 0
for line in f: #這種是一行一行讀取到記憶體,并一行一行從記憶體中洗掉, 使f變成迭代器,
if count == 9:
print('++++++++++++')
count += 1
continue
else:print(line)
count +=1
#列印檔案’yesterday‘,其中第10行,不列印,
f.close()
'''
f = open('yesterday','r',encoding='utf-8')
print(f.tell())
#列印當前檔案所列印的指標,
print(f.read(5))
#列印當前檔案的前5個字符,’Yeste‘
print(f.readline())
#列印當前檔案的一行,’rday, all my troubles seemed so far away‘
print(f.tell())
#列印當前檔案所列印的指標,
f.seek(0)
#將指標指回0,
print(f.readline())
#列印當前檔案的一行,#’Yesterday, all my troubles seemed so far away‘
print(f.encoding)
#列印檔案字符編碼
print(f.fileno())
#列印作業系統內部介面的去讀檔案的編號,
print(f.name)
#列印檔案名
print(f.seekable())
#判斷檔案是否為可移動指標, 原因:檔案不能移動指標,如:終端、驅動等,因為在linux中一切皆為檔案,但驅動檔案等是無法移動指標的,
print(f.writable())
#判斷檔案是否可讀,
print(f.flush())
#因為存硬碟前,會先讓記憶體存到快取,快取滿了后再放入硬碟,flush是及時放入硬碟,
#例:
import sys, time
for i in range(50):
sys.stdout.write("#") # sys.stdout 列印不換行,
sys.stdout.flush() # 及時列印,不放快取條,
time.sleep(0.05)
print(f.closed)
#判斷檔案是否被關閉,
f = open('yesterday2','a',encoding='utf-8')
print(f.truncate(10))
#截斷檔案‘yesterday2’10個字符,
f = open('yesterday','r+',encoding='utf-8')#'r+'可讀,和追加,讀寫
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())#列印游標
f.write('----------diao-----------') #追加是檔案的最后,
print(f.readline())
#
f = open('yesterday','w+',encoding='utf-8') #'r+'可讀,和追加,寫讀,會先創建一個檔案,沒什么用
f.write('----------diao-----------') #追加是檔案的最后,
f.seek(10)
f.write('----------diao-----------') #追加是檔案的最后,
f = open('yesterday','rb') #rb是指二進制檔案,二進制不能傳encoding傳輸,當網路傳輸時用二進制,
print(f.readline())
f = open('yesterday','wb') #rb是指二進制檔案,二進制不能傳encoding傳輸,當網路傳輸時用二進制,二進制寫
f.write('hello binary\n'.encode())
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236359.html
標籤:Python
