1. 程式人生 > >PYTHON檔案操作和列表的使用

PYTHON檔案操作和列表的使用

本節所講內容:

       1)檔案的基本操作

       2)列表的基本操作

       3)元組的介紹

       4)實戰:建立一個購物程式

檔案的基本操作

3.1          開啟檔案

python中使用open函式來開啟檔案(預設函式方式,可以省略)

語法格式:

open(檔名,檔案模式,緩衝)

其中,檔案模式和緩衝都是可選項

>>> f =open('name_list')

如果開啟的檔案不存在,會出現以下報錯

>>> f = open('name')

Traceback (most recent calllast):

  File"<stdin>", line 1, in <module>

IOError: [Errno 2] No suchfile or directory: 'name'

3.1.1 檔案模式

open函式中模式引數的常用值

描述

r

讀模式

w

寫模式

a

追加模式

b

二進位制模式(可新增到其他模式中使用)

+

讀/寫模式(可新增到其他模式中使用)

b’模式改變處理檔案的方法。一般來說,Python假定處理的是文字檔案(包含字元)。通常這樣做不會有任何問題。但如果處理的是一些其他型別的檔案(二進位制檔案),比如聲音剪輯或者影象,那麼應該在模式引數中增加‘b’。引數 ‘b’可以用來讀取一個二進位制檔案。

3.1.2 緩衝

open函式的第3個引數(可選)控制著檔案的緩衝。如果引數是0(或者False),I/O(輸入/輸出)就是無緩衝的(所有的讀寫操作都直接針對硬碟);如果是1(或者是True),I/O就是有緩衝的(意為著Python使用記憶體來代替硬碟,讓程式更快,只有使用flush或者close是才會更新硬碟上的資料)。大於1的數字代表緩衝區的大小(單位是位元組),-1(或者是任何負數)代表使用預設的緩衝區大小。

3.2          基本的檔案方法

3.2.1 寫檔案

>>> newfile =file('a.txt','w')                                #建立一個新的檔案a.txt

>>>newfile.write('Hello,World!!!')                        #在檔案中寫入“Hello,World!!!”

>>> newfile.flush()                                               #重新整理檔案內容

>>> newfile.close()                                               #關閉檔案

在另外一個終端檢視發現已經生成了a.txt檔案,檢視檔案內容已經生成

注:在Python中對檔案進行寫入操作時,預設儲存在記憶體中1024位元組的內容,在沒有對檔案執行close關閉時,不寫入磁碟,這樣有利於提高執行效率,如果寫入的內容操作1024位元組,將會自動寫入磁碟

補充一下:

python中中文的輸入方式

Python預設的字元編碼ASCII,如果要想讓輸出內容顯示中文在指令碼中轉換一下字元編碼

#coding=utf-8

[[email protected] test]# ls

a.txt 

[[email protected] test]# cata.txt

Hello,World!!![[email protected]]#

注:

1)如果這裡要換行顯示,可以在寫入的內容之後加上換行符“\n”

>>>newfile.write('Hello,World!!!\n')

2)如果原本已經存在a.txt檔案,再次進行寫操作的話,將會重新建立檔案

>>> newfile =file('a.txt','w')

>>> newfile =file('a.txt','w')

執行完此操作後再次檢視a.txt,發現內容為空

3)在Python中要慎用‘w’

3.2.2 讀檔案

>>> f =file('a.txt','r')                                                          #指定檔案模式為讀模式  

>>> f.read()                                                                        #讀取檔案全部內容

'Hello,Girl!!!Hello,Boy!!!Hello,Boy!!!\nHello,Boy!!!\n'

>>> f =file('a.txt','r')

>>> f.read(5)                                                                       #指定讀檔案的位元組數

'Hello'

>>> f.read()                                                          #再次執行,讀取檔案剩下的全部內容

'!!!Hello,Boy!!!Hello,Boy!!!\nHello,Boy!!!\n'

>>> f =file('name_list','r')                                    #檔案模式“r”可以省略

>>> f.readline()                                                    #逐行讀取檔案內容

'01\tZhaoXiangJie\tIT\t99\t99\t99\t99\r\n'           #檔案第一行

>>> f.readline()                                     

'02\tLiuBei\t\tSHU\t98\t78\t83\t80\r\n'                #檔案第二行

…………

3.2.3 追加檔案

>>> f =file('a.txt','a')

>>>f.write('Hello,Boy!!!\n')

>>> f.flush()

>>> f.close()

[[email protected] test]# cata.txt

Hello,Girl!!!Hello,Boy!!!

3.2.4 管式輸出

cat   檔案  | python  指令碼

cat讀取到的檔案的內容通過管道作為指令碼執行的標準輸入(stdin),指令碼中通過插入sys模組,引用檔案的內容

例:

[[email protected] ~]# vimpipe.py

#!/usr/bin/env python

import sys

text = sys.stdin.read()

words = text.split()

wordcount = len(words)

print "Wordcount:%s" % wordcount

[[email protected] ~]# catexample.txt

Nice to meet you

Today is a sunny.

執行結果

[[email protected] ~]# catexample.txt  | python pipe.py

Wordcount: 8

注:split是字串處理的一種方法,把字串轉換成列表的格式

>>> a = 'nice tomeet you'

>>> a.split()

split預設的分隔符是空格, 可以進行自定義

>>> b.split('/')

['', 'usr', 'bin','python']

3.2.5 在檔案的指定位置進行寫操作

python中通過seek方法可以定位到寫的位置

>>> f =file('a.txt','w')

>>>f.write('0123456789')

>>> f.seek(5)                                                 #定位到第五個位元組位

>>>f.write('Hello,World!')

>>> f.flush()

>>> f.close()

>>> f =file('a.txt','r')

>>> f.read()

'01234Hello,World!'

tell方法返回當前檔案的位置

>>> f =file('a.txt','r')

>>> f.read(3)

'012'

>>> f.read(2)

'34'

>>> f.tell()

5

注:Python中函式有很多,不會使用時要學會使用help進行查詢

>>> help(file.tell)

Help on method_descriptor:

tell(...)

tell() -> current file position, an integer (may be along integer).

3.2.6 檔案內容替換

語法格式

for   line in    fileinput.input(“filepath”,inplace=1)

       line = line.replace(“oldtext”,”newtext”)

       print line

例:

[[email protected] ~]# viminput.py

#!/usr/bin/env  python

import fileinput

for line infileinput.input('a.txt',backup='bak',inplace=1):

        line = line.replace('world','Python')

        print line

fileinput.close()

執行指令碼之後檢視a.txt

[[email protected] ~]# cata.txt

Hello,Python!

而且在當前目錄下生成bak結尾的檔案

inplace=1:標準輸出會被重定向到開啟檔案;backup='bak',:替換檔案內容之前備份字尾以bak結尾

3.2.7 修改檔案內容

[[email protected] ~]# vimwith.py

#!/usr/bin/env python

with open('a.txt','r+') as f:

        old = f.read()

        f.seek(13)

        f.write('new line\n' + old)

檢視檔案內容

[[email protected] ~]# cata.txt

Hello,Python!new line

Hello,Python!

3.3          列表的基本使用

列表是Python的6種內建序列(還有元組,字串,Unicode字串,buffer物件,xrange物件)之一,列表內的值可以進行更改,操作靈活,在Python指令碼中應用非常廣泛

列表的語法格式

[ ‘元素1’,‘元素2’,‘元素3’,……,‘元素n’]

在需要操作一組數值的時候,序列很好用。可以通過序列表示資料庫中一個人的資訊——第一個元素是姓名,第二個元素是年齡。根據上述內容編寫一個列表

>>> zhangsan =['zhangsan',18]

>>> lisi =['lisi',19]

>>>database=[zhangsan,lisi]

>>> database

[['zhangsan', 18],['lisi', 19]]

3.3.1 索引

序列中的所有元素都是有編號的,從0開始遞增。這些元素可以通過編號分別訪問

>>> company ='xuegod'

>>> company[0]

'x'

所有序列都可以通過這種方式進行索引,使用負數索引時,Python會從右邊,也就是從最後一個元素開始計數。最後一個元素的位置編號是-1(不是-0,避免和第一個元素重合)

>>> company[-1]

'd'

字串可以直接進行索引,不需要通過變數進行引用

>>> 'hello'[1]

'e'

可以直接對函式呼叫的返回結果進行索引

>>> ready =raw_input('Are you ready?(yes or no)')[0]

Are you ready?(yes or no)yes

>>> ready

'y'

實戰:編寫一個程式碼程式,根據使用者輸入打印出時間日期

#!/usr/bin/python

#According to the given date(date) (month) (year) in the form of digital print out

months = [

'January',

'February',

'March',

'April',

'May',

'June',

'July',

'August',

'September',

'October',

'November',

'December',

]

#With 1 ~ 31 number as the endof the list

endings = ['st','nd','rd'] +17 * ['th'] \

+ ['st','nd','rd'] + 7 *['th'] \

+ ['st']

year = raw_input('Year:')

month = raw_input('Month(1-12):')

day = raw_input('Day (1-31):')

month_number = int(month)

day_number = int(day)

#To months and days minus 1,in order to obtain the correct index

month_name =months[month_number-1]

ordinal = day +endings[day_number-1]

print "%s %s,%s"  % (month_name,ordinal,year)

作業:

實戰:建立一個商品頁面,要求

1、顯示商品名稱和價格對應關係

2、獲取使用者工資水平

3、提供使用者選擇購買商品功能

4、使用者購買完商品,顯示使用者賬號餘額

5、提示使用者是否繼續購買

指令碼效果圖

相關推薦

PYTHON檔案操作列表的使用

本節所講內容:        1)檔案的基本操作        2)列表的基本操作        3)元組的介紹        4)實戰:建立一個購物程式 檔案的基本操作 3.1          開啟檔案 python中使用open函式來開啟檔案(預設函式方式,可以省略

python 檔案操作的相對路徑絕對路徑(windows)

1.相對路徑 windows  '.\'表示當前路徑 with open(r'.\db\123.txt','w',encoding='utf-8') as f: f.write('abc')   2.絕對路徑 2.1 直接加死絕對路徑 with open('c:

python基礎之檔案操作簡單的類

檔案操作 #檔案刪除 import os path=".\\data\\" for s in os.listdir(path): filename=path+s print(filename) # os.remove("test.txt") #檔案開啟 f=open('test.

python基礎之檔案操作函式

一、知識點 1.三元運算 a = 2 b = 3 val = 6 if a < b else 7 print(val) 2.檔案讀取 f = open(file='file.txt',mode='r',coding='utf-8') data = f.read() print(d

簡單的Python檔案操作(3)檔案的重新命名,刪除對資料夾的操作

(1) 檔案的重新命名,刪除os模組中的rename()可以完成對檔案的重新命名操作rename(需要修改的檔名,新的檔名)import os os.rename("a.txt","b.txt")os模組中的remove()可以完成對檔案的重新命名操作remove(要刪除的檔

python 檔案操作 os模組shutil模組

############################################################################ python中對檔案 / 資料夾的操作涉及到os模組和shutil模組 import os import sh

Python基礎9——檔案操作異常處理

1、Python中的編碼: ASCII 、 Unicode 、utf-8 、gbk 對於計算機來說,計算機只認識0 1字元 (1)ASCII 8位二進位制編碼,理論上可以存256個字元,但是在ASCII表上只有127個字元,因為英文字身就簡單,每個

python 基礎之列表操作列表的相關函數

必須 相同元素 int 批量修改 沒有 增刪改查 end 情況 span 一:列表的相關操作 #1.列表的拼接list1 = [1,2]list2 = [3,4]listvar = list1 + list2print(listvar)#2.列表的重復lst = [1,2

Python操作列表推導生成器表示式開始

# 序列 序列是指一組資料,按存放型別分為容器序列與扁平序列,按能否被修改分為不可變序列與可變序列。 **容器序列與扁平序列** 容器序列存放的是物件的引用,包括`list`、`tuple`、`collections.deque`。 扁平序列存放的是物件的值,包括`str`、`bytes`、`byte

Python叠代列表生成器

false 限定 表達 div size abc 函數 如何判斷 索引 使用for循環遍歷list和tuple,這種遍歷成為叠代 在如C語言中都是通過下標拿到值,for...in這種方式其實是相同的。 在函數的一節,這樣說--->‘求和函數sum(),sum(iter

python 字典dict列表list的讀取速度問題, range合並

span {} iteration copy size 情況 rec class 異常 python 字典和列表的讀取速度問題 最近在進行基因組數據處理的時候,需要讀取較大數據(2.7G)存入字典中,然後對被處理數據進行字典key值的匹配,在被處理文件中每次讀取一行

python字典操作內置方法

def say 數據 覆蓋 word pytho 安全 date count 一 字典基本介紹 python中只有字典是映射結構,通過key取值,並且key是不可變數據類型,而value可以是任意數據類型。 字典通過一個花括號,裏面存放key:value的數據結構來定義。理

python集合操作內置方法

關系運算 可變 iss upd 最重要的 clas 類型 介紹 sca 一 集合基本介紹 集合:在{}內用逗號隔開每個值,集合的特點: 每個值必須是不可變類型 集合是無序的 集合的值不能重復 集合的應用場景較少,最重要的應用場景為進行關系運算以及去重。 二 集合的操作

C語言檔案操作Python檔案操作的比較

無論是在C語言中還是在Python中,對檔案的操作都是直接實現了計算機內部與外部之間的互動; 通過將資料寫入檔案可以更好地實現資料的儲存,而不會在程式結束之後資料隨之消失, 而通過檔案的讀取操作則可以更好地避免自己講大量資料的手動輸入程式。   本篇文章主要介紹C語言以

Lesson 024 —— python 檔案操作

Lesson 024 —— python 檔案操作 open() 方法 Python open() 方法用於開啟一個檔案,並返回檔案物件,在對檔案進行處理過程都需要使用到這個函式,如果該檔案無法被開啟,會丟擲 OSError。 注意:使用 open() 方法一定要保證關閉檔案物件,即呼叫 close()

python檔案操作write與writelines的區別

python檔案操作write與writelines的區別 轉自:https://www.aliyun.com/jiaocheng/448958.html 摘要:write和writelines的區別 1write()需要傳入一個字串做為引數,否則會報錯 2writelin

python 檔案操作心得

import time import numpy as np t1=time.time() dict1={} for i in range(1,4935): dict1[i]=[] with open('/storage/st2/aiqiyi/train_v2.txt','r') as f:

Python 檔案操作 - 建立上下文管理器

上下文管理器,通俗的介紹就是:在程式碼塊執行前,先進行準備工作;在程式碼塊執行完成後,做收尾的處理工作。with語句常伴隨上下文管理器一起出現,經典場景有: with open('test.txt', 'r') as file: for line in file.readli

ASP.NET 系統檔案操作XML配置讀寫

這裡將工作中用到的兩個工具分享一下:(1)、系統檔案操作工具(2)、XML讀寫配置檔案工具。 目錄 檔案操作工具 XML配置檔案讀寫 XML配置檔案讀取示例 檔案操作工具 using System; using System.Collections.Generic;

Python迭代列表生成器

Python迭代和列表生成器時間:2017-09-27 19:14:01 閱讀:274 評論:0 收藏:0 [點我收藏+] 標籤:其他 模組 rabl 第一個 型別 fit 首字母 表達 log 使用for迴圈遍歷list和tuple,這種遍歷成為迭代 在如C語言中都是通過下標拿到值,for...in