Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   Информация о содержимом файла: подсчет слов и т.д. (http://forum.oszone.net/showthread.php?t=107941)

Balbec 28-05-2008 12:39 812721

Информация о содержимом файла: подсчет слов и т.д.
 
Привет. Нужно написать программку, аналог команды wc, которая получала бы в качестве аргумента имя иекстового файла и выводила на экран информацию о том, сколько символов, слов и строк в текстовом файле. Я догадываюсь, что это нужно сделать с помощью функций AWK, но как.
Помогите, а?

truvo 29-05-2008 16:25 813746

неинформативное название темы

QZip 08-07-2008 22:36 846238

Не обязательно awk, думаю легче использовать python или perl, благо ониустановлены по-умолчанию едвали не во всех дистрибутивах.
Например так:
Код:

#-*-coding:UTF-8-*-
#кодировка - юникод
import sys
def main():
        if(len(sys.argv)!=2):
                print "Введите в качество аргумента имя файла"
                sys.exit(2)#аналог сишного return 2;
#не реагируем если пользователь указал 1 аргумент, в этом случае в переменной sys.argv должно #быть 2 элемента: имя скрипта и имя файла
        filename=sys.argv[1]
        try:
                f=open(filename)
                txt=f.read()
                f.close()
        except:
                print "Файл "+filename+" не найден"
                sys.exit(2)
#проверяем существование файла
        strings=txt.split("\n")[:-1]
#делим содержимое файла на строки
        i=0
        words=[]
        while i<len(strings):
                words=words+strings[i].split(" ")
                i=i+1
#делим строки на слова
        print "В файле "+filename
        print str(len(strings))+" строк"
        print str(len(words))+" слов"
        print str(len(txt))+" символов"
#вывод в консоль
        sys.exit(0)#return 0
if __name__ == "__main__":
        main()


Рекомендую почитать книжку по Питону,


Время: 23:40.

Время: 23:40.
© OSzone.net 2001-