本文主要內(nèi)容
1、創(chuàng)建文件
2、讀取文件
os模塊
- os.linesep變量
ls = os.linesep 使用局部變量替換模塊變量
對于os.linesep使用,需要解釋器做兩次查詢
(1)查找os模塊
(2)在模塊中查找linesep變量,是一個全局變量,查找時需要消耗很多資源;若是頻繁使用的
屬性,建議為屬性取一個本地變量名稱;查找時先查詢本地變量,再去查找全局變量。
- os.path.exists( )
os.path.exists( ) 是os模塊中一個有用的函數(shù),幫助確認(rèn)文件是否存在;若不存在,函數(shù)會返回False,繼續(xù)執(zhí)行while循環(huán)。
輸入raw_input內(nèi)建函數(shù)
raw_input()內(nèi)建函數(shù),接受一個“提示字符串”參數(shù),作為對用戶的提示信息
列表解析
fobj.writelines(['%s%s' % (x, ls) for x in all])
將內(nèi)存中的內(nèi)容逐行寫入文件。
- '%s%s'
根據(jù)程序運(yùn)行平臺添加一個合適的行結(jié)束符,為每行添加結(jié)束符。- (x,ls)
每一行及其行結(jié)束符。- writelines()
文件對象的方法,接收包含行結(jié)束符的結(jié)果列表,并將其寫入文件。
try-except-else語句
- try 監(jiān)測錯誤的代碼
except 子句是我們處理錯誤的地方- IOError 類型
檢驗(yàn)open() 是否失敗- else 子句在 try 代碼塊運(yùn)行無誤時執(zhí)行。
行結(jié)束符 ‘,’
print語句自動生成的行結(jié)束符,在print語句的最后加一個逗號‘,’可以達(dá)到行結(jié)束符的目的。
#創(chuàng)建新的文件的代碼:
import os
ls = os.linesep #為屬性取新的別名
fname = raw_input('Enter filename:') #提示用戶輸入一個文件名
while True:
if os.path.exists(fname): #確認(rèn)文件的os函數(shù)
print "error: '%s' already exists " % fname
else:
break
all = [] #初始化列表,來保存每行文本
print "\nEnter lines ('.' by itself to quit).\n" #打印出提示信息
while True:
entry = raw_input('> ')
if entry == '.': #判斷輸入文本的結(jié)束標(biāo)志
break #終止、跳出循環(huán)
else:
all.append(entry) #添加新的一行,并將文本保存到內(nèi)存中
fobj = open(fname, 'w') #打開新建的文件,寫模式
fobj.writelines(['%s%s' % (x, ls) for x in all]) #將內(nèi)存中的內(nèi)容寫到文件中
fobj.close()
print 'DONE!'
讀取文件中的內(nèi)容:
fname = raw_input('Enter filename:')
print
try:
fobj = open(fname, 'r') #打開文件,進(jìn)入讀模式
except IOError, e:
print "*** file open error:", e
else: #監(jiān)測處理代碼塊
for eachLine in fobj:
print eachLine, #逐行輸出(‘,’為行結(jié)束符)
fobj.close()