9.1 比較簡單 看每一行開頭是不是# 是的話,忽略這一行
#!/usr/bin/env python
import os
while true:
inputfile = raw_input("please input the file name:")
if not os.path.exists(inputfile):
print "the file you input dose't exists"
continue
print "the name you input does not exists"
f1 = open(inputfile, 'r')
for each_line in f1:
if not each_line.strip().startswith('#'):
print each_line
f1.close()
9.2 設乙個標記=0, 每列印一行,標記+1
#!/usr/bin/env python
import os
infile = raw_input("please input n(n lins) f(file you want to read n lines):")
n, filein = infile.split()
n = int(n)
print n
print filein
if not os.path.isfile(filein):
print "the file you input does not exists"
f1 = open(filein, 'r')
line = 0
for each_line in f1:
if line < n:
print each_line,
line += 1
else:
break
f1.close()
9.3 每讀一行標記+1,這裡發現乙個有意思的問題, 如果你最後沒有寫 f.close() 用這段程式讀自己的話,有可能自己的程式沒有了
infile = raw_input('please input filename:')
f1 = open(infile)
num = 0
for each_line in f1:
num+=1
print "the file you input has %d lines" % num
f1.close()
看有人給出了乙個**更少的方法
filename = raw_input("please input the filename")
print len( [line for line in open(filename)] )
print [line for line in open(filename)]
雖然記憶體開銷大了一點,但是在檔案比較小的情況下可以忽略不計了,
另外發現乙個有意思的事 最後一行顯示如果是空行的話,有時候我們的顯示結果會多一行, 把列表列印出來發現這是最後一行油乙個'\n'的緣故
如果有興趣的話可以加一行判斷最後一行是否為空的**~
9.4 windows上比較簡單 直接os.sys('pause')
linux 別人部落格上搜到的不太好用,那位大牛解決了望告知
9.5不能理解那個開啟多個檔案~
這裡簡單的實現乙個,建立乙個隨機的五位到十位的姓名,乙個20到一百的隨機數
並且用了兩種方法來計算平均數 一種正常的開啟檔案,一行一行讀,然後另乙個用了列表解析
開始的時候一直平均數不同
列表解析這樣寫的(int (score) for line in f1, for score in line.split()[1])
這樣的結果是把乙個兩位數也給分解了~ 最後列印出來是一堆各位數.....
這樣寫就好 (int (line.split()[1]) for line in f1)
#!/usr/bin/env python
import random
import string
srstring = string.letters;
f1 = open('source.txt', 'w')
for i in range(0, 10):
name = ''
length = random.randint(5,10)
for j in range(length):
name += random.choice(srstring)
score = random.randint(20, 100)
score = str(score)
outstring = name + ' ' +score + '\n'
f1.write(outstring)
f1.close()
f1 = open('source.txt', 'r')
sum1 = 0
n = 0
for each_line in f1:
sum1 += int(each_line.split()[1])
n += 1
print sum1, sum1/n
f1.seek(0)
print sum(int(line.split()[1]) for line in f1)
f1.close()
python核心程式設計 第九章 9 11 練習
usr bin python coding utf 8 9 1.檔案過濾.顯示乙個檔案的所有行,忽略以井號 開頭的行.這個字元被用做python,perl,tcl,等大多指令碼檔案的注釋符號.附加題 處理不是第乙個字元開頭的注釋.import os,sys filename for filename...
C primer 第九章課後答案
b 在乙個檔案中將secret直接定義成外部,其他檔案或者說另乙個檔案要用的時候用extern來宣告下 c static auto topsecret d 在這個函式中定義個 靜態變數 static int beencalled 0 using 宣告更加的安全,用using namespace編譯指...
Python核心程式設計 第二版 第九章 習題答案
已放在我的github import os f open input.txt r for line in f idx line.find if idx 0 line elif idx 0 line line idx os.linesep print line,end n int input ente...