python 판 WC
#!/usr/bin/env python
#coding:utf8
from optparse import OptionParser
import sys,os
def opt():
parser = OptionParser()
parser.add_option("-c","--char",
dest="chars",
action="store_true",
default=False,
help="only count chars")
parser.add_option("-w","--word",
dest="words",
action="store_true",
default=False,
help="only count words")
parser.add_option("-l","--line",
dest="lines",
action="store_true",
default=False,
help="only count lines")
parser.add_option("-n","--no-total",
dest="nototal",
action="store_true",
default=False,
help="no total")
options,args = parser.parse_args()
return options,args
''' '''
def get_count(data):
chars = len(data)
words = len(data.split())
lines = data.count('
')
return lines,words,chars
''' '''
def print_wc(options,lines,words,chars,fn):
if options.lines:
print lines,
if options.words:
print words,
if options.chars:
print chars,
print fn
''' '''
def main():
options,args = opt()
if not (options.lines or options.words or options.chars):
options.lines , options.words , options.chars = True,True,True
''' , , '''
if args:
total_lines,total_words,total_chars = 0,0,0
for fn in args:
if os.path.isfile(fn):
with open(fn) as fd:
data = fd.read()
lines,words,chars = get_count(data)
print_wc(options,lines,words,chars,fn)
total_lines += lines
total_words += words
total_chars += chars
elif os.path.isdir(fn):
print >> sys.stderr,"%s: is a directory" %fn
else:
sys.stderr.write("%s: No such file or direcotry
" %fn)
if len(args) > 1 and not options.nototal:
print_wc(options,total_lines,total_words,total_chars,'total')
else:
data = sys.stdin.read()
fn = " "
lines,words,chars = get_count(data)
print_wc(options,lines,words,chars,fn)
if __name__ == '__main__':
main()
http://www.laomaotao.net/?D3103
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
재사용 가능한 액션 클래스Jetstream에 익숙하다면 프로젝트에서 app/Actions 디렉토리를 볼 수 있습니다. 이 게시물은 간단하고 재사용 가능한 액션 클래스를 작성하기 위한 것입니다. 우리의 행동이 무엇을 해야 하는지 개요를 작성해...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.