コードメモ > 雑用スクリプト


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

shellscriptはおぼえにゃならん。

for arg in `cat $1`
do
  w3m -dump $arg | perl -pe 's/\n//g' > ./outs/.txt
done

フォルダを作成

#coding:utf-8
import os
from optparse import OptionParser

def procfolder():
  import sys
  if len(sys.argv) > 1:
    print '次のクラスのフォルダを作成します'
    for name in sys.argv[1:]:
      print '%s '%name,
    print u'\nよろしいですか[y/n]',
    if 'y' == raw_input():
      _makefolder(sys.argv[1:])
    else:
      print u'フォルダ作成をキャンセルしました'
  else:
    print u'クラス名を入力してください'

  def _makefolder(clsname_list):
    for name in clsname_list:
      ps = os.path.join('.','text_files',name)
      os.makedirs(ps)

sqlite3の習作といろいろ無茶して遊ぶ

#coding:utf-8
import os
from optparse import OptionParser

def procfolder():
  import sys
  if len(sys.argv) > 1:
    print '次のクラスのフォルダを作成します'
    for name in sys.argv[1:]:
      print '%s '%name,
    print u'\nよろしいですか[y/n]',
    if 'y' == raw_input():
      _makefolder(sys.argv[1:])
    else:
      print u'フォルダ作成をキャンセルしました'
  else:
    print u'クラス名を入力してください'

  def _makefolder(clsname_list):
    if os.exist('./text_files'):
      return False
    for name in clsname_list:
      ps = os.path.join('.','text_files',name)
      os.makedirs(ps)
    return True

def create_database():
  import sqlite3
  def create_table(database):
    sql_text = '''
    create table words(
      id integer primary key autoincrement,
      word text,
      type integer
    );'''
    database.execute(sql_text)
  def have_word(word,database):
    sql_text = '''
    select * from words where word='%s';
    '''%(word)
    if database.execute(sql_text).fetchone():
      return True
    else:
      return False
  def addword(word,word_type,database):
    sql_text= '''
    insert into words (word,type) values ('%s',%d);
    '''%(word,word_type)
    database.execute(sql_text)
    print '.',

  def exist_table(database):
    sql_text='''
       select name from sqlite_master
         where type='table' order by name and name='words';
    '''
    if database.execute(sql_text).fetchone():
      return True
    else:
      return False

  print 'creating table:'
  db = sqlite3.connect('worddatabase.db')
  if not exist_table(db):
    create_table(db)
  for word,word_type in enumwords():
    if not have_word(word,db):
      addword(word,word_type,db)
  db.commit() #コミットしないと反映されないようで...
  db.close()
  print 'done.'

def enumwords():
  import os
  from learn import Parser
  root_folder = 'text_files'
  join = os.path.join
  parser = Parser()
  for clsname in os.listdir(join('.',root_folder)):
    for docname in os.listdir(join('.',root_folder,clsname)):
       file_path =join('.',root_folder,clsname,docname)
       for line in open(file_path):
         for words in parser.parse_iter(line):
           if words[-1]>=10:#品詞
             yield (words[1],words[-1])

def regist_words(database):
  sql_text='''
    select id from words;
  '''
  for data in database.execute(sql_text):
    yield data

def create_doctable():
  import sqlite3
  db = sqlite3.connect('worddatabase.db')
  def create_doctable(database):
    sql_text='''create table docment_prob(
         name text'''
    for word_id in regist_words(db):         
      sql_text += ',id_%d real'%word_id
    sql_text+=');'
    database.execute(sql_text)
  create_doctable(db)
  #...カラムが多すぎると怒られる。
  #まあ当たり前っちゃ当たり前なんだが。
  #wordをid化しているから
  #バイナリストリームとして保存しても問題ない。

def docprob(filepath,db):
  from learn import Parser
  parser = Parser()
  for line in open(filepath):
    for word_data in parser.parse_iter(line):
      word = word_data[1]
      type = word_data[-1]
      sql_text = '''
        select id from words
          where word = '%s' and type = '%s';
      '''%(word,type)
  #未テスト2        

if __name__ == '__main__':
  #procfolder()
  #create_database()
  create_doctable() 
  #calc_clsprob()