Python學習(六)——迭代、檔案讀寫
迭代
迭代通過for…in…實現
①list
>>> l=['Ryan','Rick','Morty']
>>> for key in l:
print key
Ryan
Rick
Morty
②tuple
>>> t=('Ryan','Rick','Morty')
>>> for key in t:
print key
Ryan
Rick
Morty
③字串
>>> for k in 'abcdefgh':
print k
a
b
c
d
e
f
g
h
④字典
(dict的儲存順序不是按list順序排列的)
迭代key:
>>> d={'name01':'Ryan','name02':'Rick','name03':'Morty'}
>>> for key in d:
print key
name03
name02
name01
迭代value:
>>> d={'name01':'Ryan','name02':'Rick','name03':'Morty'}
>>> for value in d.iteritems():
print value
('name03' , 'Morty')
('name02', 'Rick')
('name01', 'Ryan')
同時迭代key和value:
>>> for key,value in d.iteritems():
print key,value
name03 Morty
name02 Rick
name01 Ryan
⑤同時迭代多個變數:
>>> for x,y,z in [('a',1,4),('b',4,8),('d',7,9),('s',5,89)]:
print x,y,z
a 1 4
b 4 8
d 7 9
s 5 89
⑥利用enumerate函式將list變成索引-元素對:
>>> L=[12,56,789,15,5,89,45,34]
>>> for i,v in enumerate(L):
print i,v
0 12
1 56
2 789
3 15
4 5
5 89
6 45
7 34
⑦判斷一個物件是否可以迭代:
>>> from collections import Iterable
>>> isinstance('Ryan',Iterable)
True
>>> isinstance(12345,Iterable)
False
檔案讀寫
1 open()函式
flie_obj = open(filename, mode=’r’,buffering = -1)
filename為傳入檔名
mode為可選引數,預設值為r,(’r’讀,’w’寫,’rb’讀二進位制檔案<影象、視訊等>,’wb’寫二進位制檔案)
buffering預設值為-1(表示系統預設的快取方式),為可選引數(0代表不快取,1或大於1的值表示快取一行或指定緩衝區大小)
>>> f1=open('F:/data.txt','r')
>>> print f1.read()
Hello,world!
>>> f1.close()
>>> f2=open('F:/data.txt','w')
>>> f2.write('abcdefg')
>>> f2.close()
讀取非ASCII碼文字檔案時,必須以二進位制模式開啟,再解碼。如GBK編碼檔案:
f=open('F:/data.txt','r')
u=f.read().decode('gbk')
print u
f.close()
(data.txt檔案中內容為中文)
或使用codecs模組:
import codecs
with codecs.open('F:/data.txt','r','gbk') as f:
print f.read()
2 readlines()函式
file_obj.readlines()
將資料從檔案中一行一行的讀取出來,返回一個list(包含換行符);
3 readline()函式
file_obj.readline()
讀取檔案中的第一行資料,返回一個字串;
4 seek()函式
file_obj.seek(offet, whence=0)
在檔案中移動檔案指標,從whence(0表示檔案頭部,1表示當前位置,2表示檔案尾部)偏移offset個位元組;
whence引數可選,預設值為0.
5 split()函式
split(self, sep=None, maxsplit=None)
split()函式:指定分隔符對字串進行分割,引數1為指定的分隔符,引數2為分割的字串個數;
s = "40920 8.326976 0.953952 320 8.326976 0.953952"
print s.split('\t')
print s.split('\t',2)
輸出:
['40920', '8.326976', '0.953952', '320', '8.326976', '0.953952']
['40920', '8.326976', '0.953952\t320\t8.326976\t0.953952']
6 strip()函式
擷取掉所有的回車字元
檔案關閉
使用 try…finally 保證無論是否出錯都能正確關閉檔案
try:
f=open('F:/data.txt','r')
print f.read()
finally:
if f:
f.close()
或利用 with 語句:
with open('F:/data.txt','r') as f:
print f.read()
相關推薦
Python學習(六)——迭代、檔案讀寫
迭代 迭代通過for…in…實現 ①list >>> l=['Ryan','Rick','Morty'] >>> for key in l: print key Ryan Rick Morty ②tup
python面向物件學習(六)類屬性、類方法、靜態方法
目錄 1. 類的結構 1.1 術語 —— 例項 1.2 類是一個特殊的物件 2. 類屬性和例項屬性 2.1 概念和使用 2.2 屬性的獲取機制 3. 類方法和靜態方法 3.1 類方法 3.2 靜態方法
python學習(六):python中賦值、淺拷貝、深拷貝的區別
存在賦值、淺拷貝、深拷貝問題的資料型別是對組合物件來說,所謂的組合物件就是包含了其它物件的物件,如列表,類例項。 其他的單個物件則不存在這個問題。 可變物件: list, dict. 不可變物件有: int, string, float, tuple.  
Python基礎(一)迭代器、生成器
迭代(iteration) 如果給定一個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們稱為迭代(Iteration) 在Python中,迭代是通過for ... in來完成的,所以,當我們使用for迴圈時,只要作用於一個可迭代物件,for
full-speed-python習題解答(六)--迭代器
1.Implement an iterator class to return the square of all numbers from “a” to “b”. class all_number(object): def __init__(self,a,b): sel
python學習(六)---文件操作
not game seek read 終端設備 fas uic med ear 文件操作文件操作流程 1、打開文件,得到文件句柄並賦值給一個變量 2、通過句柄對文件進行操作 3、關閉文件現有文件如下: Somehow, it seems the love I knew
linux學習(六)絕對路徑、相對路徑、cd、mkdir、rmdir、rm
director shell script local mkdir -p create deb blog 目錄 一、絕對路徑 就是從根開始的,如:/root、/usr/local。 二、相對路徑 相對於當前路徑的,比如我們在當前路徑下建立了一個a.txt。 [root@i
常用軟體設計模式(六)迭代器模式
迭代器模式不常用,很多高階語言都將該模式封裝在語言中了,入C#的 foreach in 但是有必要了解一下 迭代器模式:提供一個方法順序訪問一個聚合物件中各個元素,而又不暴露該物件的內部表示。 優點: 1、它支援以不同的方式遍歷一個聚合物件。 &nb
python學習(六)函式
實現特定功能的一坨程式碼,為了提高程式碼的複用性;用def定義,必須呼叫才會執行 入參的時候為形參(變數);呼叫時傳的為實參;在函式裡定義的變數為區域性變數,只能在函式中使用;return 返回值 函式中幾種引數:位置引數、預設值引數、可變引數(*args)、關鍵字引
重拾Python學習(六)----------面向物件高階程式設計
本文參考:廖雪峰的官方網站:https://www.liaoxuefeng.com 使用__slots__ 果我們想要限制例項的屬性,比如,只允許對Student例項新增name和age屬性。 class Student(object): __slots
python學習(十三)——模組time、random、os、sys、json、re
一、概念 模組 1、三種類型: (1)python標準庫 (2)第三方模組 (3)自定義模組 2、匯入 (1)import: 1)執行;2)呼叫 (2)from __ import * (不推薦) (3)執行對應檔案
Python基礎(四)——迭代器/物件,生成器
首先廖雪峰網站寫的內容就我目前初步學習來說,已經相當詳實,知識點平鋪直敘讓人易接受,所以以下內容均作為一種摘記記錄以及補充。 1. 列表生成器 主要目的是建立 list 。多看例子就能清楚: print(list(range(1,10,2))) #[1, 3, 5, 7, 9].生成1~9
ROS學習(六):CMakeLists.txt 檔案
CMakeLists.txt 檔案 為 CMake build 檔案。是 CMake 編譯系統中軟體包的輸入。描述如何編譯程式碼、安裝到哪裡。 CMakeLists.txt 格式: 1、Required CMake Version (cmake_min
java基礎之I/O流(一)------------字元流的檔案讀寫操作
一.流的概念: java的輸入輸出稱為流,流是一組有順序的集合。而流的本質則是資料傳輸 二.流的分類: 1.根據處理的功能分為位元組流(InputStream,OutPutStrean)和字元流(Writer,Reader)
python 學習彙總24:迭代解包Iterable Unpacking( tcy)
迭代解包Iterable Unpacking =================================================================== # 1.例項1 *a, = range(5); print(a)
python 學習彙總25:迭代器iter( tcy)
迭代器 2018/6/12 目錄: iter 1.iter 2.iter-型別判斷 3.iter-解包 itertools工具 1.itertools函式簡表 見本人相關博文 2.itertools函式詳細說明 見本人相關博文 3
python高階(二)——多工(三)協程(1)迭代器、生成器
迭代器 迭代是訪問集合元素的一種方式。迭代器是一個可以記住遍歷的位置的物件。迭代器物件從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。 1. 可迭代物件 我們已經知道可以對list、tuple、str等型別的資料使用for...in...的迴
python 學習彙總52:迭代器常用內建函式map,filter,zip,reduce(入門學習- tcy)
迭代器常用內建函式 2018/9/15 1.內建函式 map(function, iterA, iterB, ...) ->iterator #建立迭代器等同於itertools.starmap(); filter(function,iterable) ->i
線程學習--(六)單例和多線程、ThreadLocal
pen single cal final ride args ash public 線程 一、ThreadLocal 使用wait/notify方式實現的線程安全,性能將受到很大影響。解決方案是用空間換時間,不用鎖也能實現線程安全。 來看一個小例子,在線程內的set、get
Linux 網卡驅動學習(六)(應用層、tcp 層、ip 層、設備層和驅動層作用解析)
local acc 每次 letter auto sizeof style article inode 本文將介紹網絡連接建立的過程、收發包流程,以及當中應用層、tcp層、ip層、設備層和驅動層各層發揮的作用。 1、應用層 對於使用socket進行網絡連接的serv