1. 程式人生 > >Python學習(六)——迭代、檔案讀寫

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學習絕對路徑相對路徑cdmkdirrmdirrm

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學習十三——模組timerandomossysjsonre

一、概念 模組 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