開啟檔案:使用open函數
fp = open('test_file.txt','r')
a = fp.read()
b = fp.readline()
c = fp.readlines()
fp.close()
其中,test_file的欄位可填入絕對路徑,但是請注意windows: fp = open('C:\\Users\\jack\\Desktop\\test_file.txt')
mac : fp = open('/Users/Documents/test_file.txt')
因為windows的路徑的斜線是\,會造成跳脫字元,所以要輸入兩個\
而mac沒有這個困擾
r:讀檔 w:寫入 a:附加
讀取檔案的方法有三種:read(), readline(), readlines()
read() : 一口氣讀完
readline():一次只讀一行文字檔,傳回一個字串
readlines():把每一行拆開放在不同的字串變數,最後彙整成一個串列
f = open ('C:\\Users\\jack\\Desktop\\MP21602\\zop.txt','r')
print (f.read())
#f = open ('C:\\Users\\jack\\Desktop\\MP21602\\zop.txt','r')
print (f.readline())
print (f.readline())
f = open ('C:\\Users\\jack\\Desktop\\MP21602\\zop.txt','r')
print (f.readlines())
read() 會顯示全部內容readline() 照理說會顯示
>>>
Beautiful is better than ugly
Explicit is better than implicit
>>>
因為純文字格式每行後面都有個換行符號\n ,加上本身print也有一個換行
有兩種解決方法
(1) 用strip()清除字串頭尾非必要字元
(2) print ,end=""
使用with敘述可以讓程式更簡潔
with open('C:\\Users\\jack\\Desktop\\MP21602\\zop.txt','r') as f:
for line in f:
print line
上述程式把要讀取的檔案名稱寫在程式碼並不是個很好的方式,通常會把要操作的文字對象已執行參數的方式輸入
程式命令列函數可以用sys.argv取得
import sys
if len(sys.argv)<2:
print("How to use: python 8-2.py class")
exit(1)
std_data = dict()
with open(sys.argv[1],encoding='utf-8') as fp:
alldata = fp.readlines()
for line in alldata:
no,name = line.rstrip('\n').split(',')
std_data[no] = name
print (std_data)
<\pre>