概述
從Selenium模塊化一文中,可以看出參數化的必要性,本文來介紹下讀取外部txt文件的方法。
如何打開文件
打開文件有以下兩個函數可以應用:
1、open(file_name,access_mode)
file_name: 文件路徑及名稱;
access_mode :訪問方式,具體參數如下,,未提供參數,則默認為r:
· r:表示讀取;
· w:表示寫入;
· a:表示添加;
· +: 表示讀寫;
· b:表示2進制訪問;
2、file函數
file()內建函數它的功能等于open(),如下根據文檔說明可知:
>>> help(open)
open(...)
open(name[, mode[, buffering]]) -> file object
Open a file using the file() type, returns a file object. This is the
preferred way to open a file. See file.__doc__ for further information.(END)
讀取英文txt
接下來介紹讀取txt文件內容的方法,Python中提供了讀取文件的幾種方法,如下;
· Read() 讀取整個文件
· Readlines()按行讀取整個文件
· Readeline()按行讀取一行內容
現在假設讀取的txt文件存儲的是用戶登錄名及密碼的測試數據,內容如下:
admin,admin
guest,guest
test,test
那么這種情況比較適合用按行讀取的方式來獲取文件,如下示例:
#coding:utf-8
import codecs
def str_reader_txt(address):
fp=open(address,'r')
users=[]
pwds=[]
lines=fp.readlines()
for data in lines:
name,pwd=data.split(',')
name=name.strip('
')
pwd=pwd.strip('
')
users.append(name)
pwds.append(pwd)
print "user:%s(len(%d))" %(name,len(name))
print "pwd:%s(len(%d))" %(pwd,len(pwd))
return users,pwds
fp.close()
上述通過Readlines()按行讀取txt文件內容,并且使用split()函數切割字符串,分別得到用戶名和密碼,需要注意的是讀取出來的字符有后面的回車符,所以需要strip函數進行過濾。
讀取中文txt
但是實際測試過程中,也有可能需要輸入中文的用戶及密碼,能否測試通過?修改測試文檔txt的用戶名為中文,內容如下:
管理員,admin
來賓,guest
測試人員,test
執行上述腳本后,結果如下:
可以看出,上述的腳本,在進行中文處理時,遇到異常,中文字符顯示亂碼,下面提供兩種解決方法:
方法一
#coding:utf-8
import codecs
def str_reader_txt(address):
fp=open(address,'r')
users=[]
pwds=[]
lines=fp.readlines()
for data in lines:
print type(data)
data=data.decode("gb18030")#處理中文編碼問題
print type(data)
name,pwd=data.split(',')
name=name.strip('
')
pwd=pwd.strip('
')
users.append(name)
pwds.append(pwd)
print "user:%s(len(%d))" %(name,len(name))
print "pwd:%s(len(%d))" %(pwd,len(pwd))
return users,pwds
fp.close()