读书人

批改文本文件中的word

发布时间: 2013-01-08 14:02:13 作者: rapoo

修改文本文件中的word
实验室干活儿,突然有需求,要修改一个文件夹下N个文件(我也不知道有多少个,木有数过)中的同一个word,so,写了一个这个玩意儿。。。欢迎讨论和拍砖!发现自己要多看看Python的doc了。。。

#! /usr/bin/env python## This is .py file for modifying words in a directory## Author: luotuo# Date: 2012.12.26#import osimport sysdef print_usage():    print "The Usage:"    print "./modify_words argv1 argv2 argv3"    print "Here, argv1 is the directory or file you want to modify"    print "argv2 is the word you want to modify"    print "argv3 is the new word you want to use"    def traversal_dir(dir, old_word, new_word):    dir_list = os.listdir(dir)    for l in dir_list:        if os.path.isfile(os.path.join(dir, l)):            # Open it and replace            path = os.path.join(dir, l)            replace_word(path, old_word, new_word)        else:            path = os.path.join(dir, l)            traversal_dir(path, old_word, new_word)def replace_word(file, old_word, new_word):    try:        f = open(file, 'r')        path = os.path.dirname(file)        filename = "/temp_" + os.path.basename(file)        filename = path + filename        f_temp = open(filename, 'w')        # FIXME: It can be optimized later        for line in f.readlines():            line = line.replace(old_word, new_word)            if line:                f_temp.write(line)        f.close()        name = "/" + os.path.basename(file)        os.remove(file)        f_temp.close()        os.rename(filename, path+name)    except:        print "There is something wrong!"def main(argv):    # check sys.argv    # argv[0]: directory or file    # argv[1]: old words    # argv[2]: new words    if len(argv) != 3:        print "The arguments are wrong!"        print_usage()        sys.exit(1)    else:        # handle it        dest = argv[0]        old_word = argv[1]        new_word = argv[2]        # check if the argv[0] is a directory or not        if os.path.isdir(dest):            # Traversal the directory            traversal_dir(dest, old_word, new_word)        else:            # check if the argv[0] is a file or not            if os.path.isfile(dest):                # Open it and replace the word                replace_word(dest, old_word, new_word)            else:                print_usage()                sys.exit(1)if __name__ == '__main__':    main(sys.argv[1:])

读书人网 >系统运维

热点推荐