サーバー移転

さくらサーバーから、Xserverに移転した。さくらサーバーは、HDDなのでWordPressの表示に結構時間かかっていたが、XserverはSSDで、さらにメモリも256GBあるので、表示が早くなって満足。移転の際にSSL有効化したままだと移転がうまく行かなかったので、さくらサーバーのSSLを全て無効化して、MySQLやWordPressのファイル移転させて、Xserver側でSSL有効化するとうまく行った。移転する際にPHPのconfig弄ったりとちょっと手間かかるが、ググればすぐ解決する。以下のサイトが参考になった。

https://sitemiru.com/2016/08/14/sakura-xserver/

Pythonで任意の表現を任意のディレクトリ内で一括検索

任意のディレクトリ内にあるtxtファイル全てを対象に任意の文字列を検索したい。
Terminal上で、grepすれば済む話だけど、検索したい文字列が大量にあって、個々の頻度も知りたい、、、と思ってスクリプトを書いた。

検索したい文字列を予め一行一表現で、txtファイルにまとめておいて、検索対象のディレクトリとは別に用意しておく。
結果は、タブ区切りでファイル名、文字列、頻度の順で出力。

以下、スクリプト

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys,os,re,glob

argvs = sys.argv
argc = len(argvs)

file_list = sorted(glob.glob(sys.argv[1] + '*.txt'))
with open(sys.argv[2] + ".txt", 'r') as DM:
	DMs = DM.read().splitlines()
	
fw = open(sys.argv[3] + ".txt", 'w')
fw.write("Filename" + "\t" + "DiscourseMarker" + "\t" + "Frequency" + "\n")

for filename in file_list:
	fn = filename.strip("files/"".txt")
	with open(filename,'r') as f:
		files = f.read()
		for DMss in DMs:
			fre = len(re.findall(r'(\b)' + DMss + r'(\b)', files, re.IGNORECASE))
			mydict = {}
			mydict[DMss] = fre
			for DMss in mydict:
				DMlist = DMss
				print(fn)
				print(mydict)
				fw.write(str(fn) + "\t" + str(DMlist) + "\t" + str(mydict[DMss]) + "\n")
fw.close()

もうちょっと簡単に書けそうな気もするが、、、動くからいいや。

もともとは、Discourse Markerのリストを作って、そのリスト内の表現の頻度をファイル別で知りたかった。
ので、出力の見出しもFilename、DiscourseMarkerとなっている。