輸入和輸出
字符串插入
>>> x = 1/81
>>> print(x)
0.0123456789012
>>> print('value: %.2f % x)
value: 0.01
>>> print('value: %.5f % x)
value: 0.01234
字符串插入表達(dá)式總是采用這樣的格式:format % values,其中format 是包含一個(gè)或多個(gè)%字符的字符串秒拔。
格式字符串
命名替換:
>>> 'My {pet} has {prob}'.format(pet = 'dog', prob = 'fleas')
'My dog has fleas'
還可以按位置替換值:
>>> 'My {0} has {1}'.format ('dog', 'fleas')
'My dog has fleas'
像字符串插入那樣使用轉(zhuǎn)換說明符:
>>> '1/81 = {x}'.format(x = 1/81)
'1/81 = 0.0123456790123'
>>> '1/81 = {x:.3f}'.format(x = 1/81)
'1/81 = 0.012'
使用大括號來指定格式設(shè)置參數(shù):
>>> 'num' = (x:.4eoeakmf}'.format(x = 1/81, d= 3)
'num = 0.012'
讀寫文件
檢查文件和文件夾
處理文本文件
逐行讀取文本文件
def print_file1(fname):
f = open(fname, 'r')
for line in f:
print(line, end = ' ')
f.close \# 這行代碼是可選的耿芹,python幾乎總是會自動(dòng)為你關(guān)閉文件
將整個(gè)文本文件作為一個(gè)字符串進(jìn)行讀取
def print_file2(fname):
f = open(fname, 'r')
print(f.read())
f.close()
這個(gè)方式很方便毕荐,但是對內(nèi)存占用較大,可能導(dǎo)致計(jì)算機(jī)崩潰申尤。
寫入文本文件
def make_story1():
if os.path.isfile('story.txt'):
print('story.txt already exists)
else :
f = open('story.txt', 'w') \# 如果文件已存在,調(diào)用open('story.txt', 'w') 將刪除它
f.write('Mary had a little lamb, \n')
f.write('and then she had some more.\n')
附加到文本文件末尾
def add_to_story(line, fname = 'story.txt'):
f = open(fname, 'a')
f.write(line)
將字符串插入到文件開頭
操作系統(tǒng)Windows衙耕、Linux昧穿、Macintosh都沒有為這樣做提供直接支持。要將文本插入到文件開頭橙喘,需將文件讀取到一個(gè)字符串中时鸵,將新文本插入到該字符串,再將這個(gè)字符串寫入原來的文件:
def insert_title(title, fname = 'story.txt'):
f = open(fname, 'r+')
temp = f.read()
temp = title + '\n\n' + temp
f.seek(0) \# 讓文件指針指向文件開頭
f.write(temp)
我們將整個(gè)文件讀取到字符串變量temp中,并使用字符串拼接插入標(biāo)題饰潜。
通過調(diào)用f.seek(0)初坠,讓文件指針重新指向了文件開頭,這樣寫入f時(shí)彭雾,將從文件開頭開始碟刺。
處理二進(jìn)制文件
如果不是文本文件,它就被視為二進(jìn)制文件薯酝。二進(jìn)制文件以模式'b'打開半沽。
def is_git(fname):
f = open(fname, 'br')
first4 = tuple(f.read(4))
return first4 == (0x47, 0x49, 0x46, 0x38)
這個(gè)函數(shù)檢查fname是不是GIF圖片文件,方法是檢查其前4個(gè)字節(jié)是不是 (0x47, 0x49, 0x46, 0x38)(所有GIF圖片文件都已這4個(gè)字節(jié)打頭)吴菠。
pickle
在處理二進(jìn)制文件方面者填,pickle通常是一種方便得多的方式。
import pickle
def make_pickled_file():
grades = {'alan' : [4, 8, 10, 10],
'tom' : [7, 7, 7, 8]}
outfile = open('grades.dat', 'wb')
pickle.dump(grades, outfile)
def get_pickled_data():
infile = open('grades.dat', 'rb')
grades = pickle.load(infile)
return grades
基本上做葵,你可使用pickle.dump將數(shù)據(jù)結(jié)構(gòu)存儲到磁盤占哟,以后再使用pickle.load從磁盤獲取數(shù)據(jù)結(jié)構(gòu)。
- 出數(shù)據(jù)結(jié)構(gòu)外酿矢,還可使用pickle來存儲函數(shù)榨乎。
- pickle 不能用于讀寫特殊格式的二進(jìn)制文件,如GIF文件棠涮。對于這樣的問價(jià)谬哀,必須逐字節(jié)處理。
- Python包含一個(gè)名為shelve的模塊严肪,這個(gè)模塊提供了存儲和檢索數(shù)據(jù)的更高級方式近哟。
讀取網(wǎng)頁
>>> import urllib.request
>>> page = urllib.request.urlopen('http://www.python.org')
>>> html = resp.read()
>>> html[:25]
b'<!DOCTYPE html PUBLIC "-/'
html 包含www.python.org處網(wǎng)頁的全部文本钧排。與在Web瀏覽器中使用“查看源代碼”選項(xiàng)看到的結(jié)果一樣。將網(wǎng)頁作為字符串存儲到計(jì)算機(jī)后,便可使用Python字符串操作函數(shù)提取其中的信息蚂子。
在默認(rèn)Web瀏覽器中顯示雅虎的主頁
>>> import webbrowser >>> webbrowser.open ('http://www.yahoo.com') True