wc這個命令可以實現對檔案行數、單詞數、位元組數等的統計。
[root@sj python]# wc (ctrl + d 退出)hello
good morning
2 3 20 (2行,3個單詞,20個位元組)
[root@sj ~]# wc /etc/passwd下面寫乙個簡單的程式來實現這個功能。26 38 1206 /etc/passwd
程式一:
通過標準輸入來獲取內容並統計:
#!/usr/bin/python
import sys
data = sys.stdin.read()
lines = data.count('\n')
words =len( data.split())
chars = len(data)
#print('%s %s %s ' % (lines,words,chars)) #傳統的字串替換
print '%(lines)s %(words)s %(chars)s' %locals()
#高階用法,%(key)s,表示格式化關鍵字替換,後面就需要以字典的方式傳入對應的key值,而locals(),表示當前環境下所有的變數和值的字典,所以這裡可以進行替換
#print('%(lines)s %(words)s %(chars)s' % ) 這種方法和上面利用locals的方式是一樣的,只不過locals的變數更多而已
執行結果:
[root@sj ~]# python wc01.py
heloo
www2 2 10
[root@sj ~]#
程式二:通過引數形式獲取檔案:
[root@sj ~]# cat ar**02.py
#!/usr/bin/python
import sys
import os
try:
fn = sys.ar**[1] #監控這裡的異常
except indexerror:
print "please follow a argument after %s" %__file__ #異常**處理
sys.exit()
if not os.path.exists(fn): #如果輸入的檔案路徑不存在
print " %s is not exists" %fn
sys.exit()
with open(fn) as fd:
data = fd.read()
lines = data.count('\n')
words = len(data.split())
chars = len(data)
print "%(lines)s %(words)s %(chars)s" %locals()
執行結果:
[root@sj ~]# python ar**02.py
please follow a argument after ar**02.py
[root@sj ~]# python ar**02.py /etc/hosts
3 13 216
程式三:參考文章:既可以通過標準輸入來獲取內容並統計,又可以通過引數形式獲取檔案:
[root@sj ~]# cat hb3.py
#!/usr/bin/python
import sys
import os
if len(sys.ar**) == 1: #如果引數長度等於1, 意味著標準輸入讀取
data = sys.stdin.read()
else: #否則以下是通過引數檔案讀取
try:
fn = sys.ar**[1]
except indexerror:
print "please follow a argument after %s" %__file__
sys.exit()
if not os.path.exists(fn):
print "%s is not exists" %fn
sys.exit()
with open(fn) as fd:
data = fd.read()
lines = data.count('\n')
words = len(data.split())
chars = len(data)
print "%(lines)s %(words)s %(chars)s" %locals()
執行結果:
1、通過標準輸入來獲取內容
[root@sj ~]# python hb2.py
where arre
you2 3 16
2、通過引數形式獲取檔案
[root@sj ~]# python hb2.py /etc/passwd
32 52 1530
[root@sj ~]# python hb2.py /etc/231wdas
/etc/231wdas is not exists
簡單程式設計技巧
引自soul machine leetcode 題解 1 在判斷兩個浮點數a和b是否相等時,不要用a b,應該判斷二者之差的絕對值fabs a b 是否小於某乙個閾值,例如le 9 2 判斷乙個整數是否是奇數,用x 2!0,不要用x 2 1。因為x可能是負數 3 用char的值作為陣列的下標 例如,...
Python程式設計技巧
python 字典中使用了 hash table,因此查詢操作的複雜度為 o 1 而 list 實際是個陣列,在 list 中,查詢需要遍歷整個 list,其複雜度為 o n 因此對成員的查詢訪問等操作字典要比 list 更快。set 的 union,intersection,difference ...
python程式設計技巧
將乙個字串轉化成ascii碼並遍歷 for c in map ord,raw input 將乙個字串轉化成ascii碼並儲存到列表 l ord i ord a for i in input 字典,如果key存在則value 1否則建立 key,value 0 mp d sum mp d get d,...