Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【python3】pythonの中からシェルコマンドでsedで置換したいとき

pythonで、あるファイルの中身を書き換えることをあれこれやっていた

ググるとwith openとかで一度ファイルを開いて
ファイルの中身を書き換えて、もう一度書き出すみたいなことをしている記事がとても多い

それを真似してやってみると、なぜか修正後のファイルと元のファイルも同時に修正される
(pythonのコピーが悪さしてる?)

かなり時間をかけたけど、原因がわからなかったので別の方法で・・・

ここは古のsedをsubprocessから呼び出して使う

参考にしたページ

Pythonでテキストファイルの内容を置換する6つの方法

import subprocess
 
subprocess.run('sed -i -e s/div>/p>/g sample_fixed.html', shell=True)

自分はこの最後のshell=Trueをつけていなくて、30分ほど詰まってしまった・・・(恥ずかしい)

その時のエラーメッセージは

   OSError: [Errno 2] No such file or directory

みたいな感じだったと思う(メモってないけど)

stackoverflow.com

sedについて

今回はファイルのパスを置換する必要があったので / が分割文字だと見通しが悪い
これは別の記号で置き換えてもいいっぽい(tex のverbみたいなものか)

以下のような感じでもいけると思う(未確認です)

import subprocess
 
subprocess.run('sed -i -e s@div>@p>@g sample_fixed.html', shell=True)

sedについて参考

sedによる文字列の置換方法

【python3】シンボリックリンクを貼りたいとき

osモジュールを使う

import os
os.symlink("hoge_v3.txt", "hoge.txt")

これで、hoge.txt から hoge_sym.txt へのシンボリックリンクが貼れる

使い道としては、 hoge_v2.txtとかhoge_v3.txtのようにversionが何個もあるファイルがあるときに
それの最新版をhoge.txtとしてリンクしておくと便利
そうするとユーザー側はversionを気にせずに、最新版がリンクされているであろうhoge.txtにアクセスすればいいので

参考

osモジュールのドキュメント
16.1. os --- 雑多なオペレーティングシステムインタフェース — Python 3.6.15 ドキュメント

hikm.hatenablog.com

【ffmpeg】音声を無音(削除)したいとき

  • anオプションをつければいい

参考

qiita.com


qiita.com

【Rochy linux】でapacheのインストールと設定をする

CentOS8にApache(httpd)をインストールする方法 #Linux - Qiita

【Rocky Linux 9】07.Apache設定 #Apache2.4 - Qiita

この辺を見ながらやればOK

apacheを使えるようにするには、httpdをインストールする

dnf install httpd

サービスの起動とかはsystemctl と systemctl の2種類があるみたい
違いがわからない・・・

まぁ動けばどっちでもいいか

【Rocky linux】chronyを使った時刻の設定方法

Rocky Linux 8 : NTP : サーバーの設定 : Server World

【Rocky Linux 9】06.chrony設定 #RockyLinux - Qiita

Rocky Linux 8 NTP時刻同期( Chrony )クライント / サーバー 設定 - インフラエンジニアのメモ帳


このあたりを見ながら設定すればOK

特に一番上のserver-worldさんは、いろんなことがまとめられてるので便利

やることは、

  • dnfでchronyというパッケージをインストールする
  • 適切に設定する
  • サービスを起動する

でOK

設定の部分は場合によりけりなので省略・・・

【html】moinmoin wikiの文法メモ

hpcportal.imc.tut.ac.jp

このページが見やすくまとめられている

{{{#!highlight python
def hello():
    print "Hello World!"
}}}

特に便利なのはこれ

このwikiのページの中に、pythonとかshellとかtexのコードを書きたい時に使う
右上のpythonをその言語に置き換えると、予約語を適当に色をつけてくれる

左端にページ番号も出してくれるので便利

特に言語がなければ空白でもOKだったと思う

{{{#!highlight
def hello():
    print "Hello World!"
}}}

【HTCondor】使用するcpuを投入時の状態に応じて動的に変更する

3~8個のcpuのうち空いているものを使いたい時は以下のように書けばいいらしい

  executable = foo.exe
  # Only interested in slots with 3 to 8 CPUs if they
  # are static or dynamic.  If a slot is partitionable,
  # make sure it has at least 3 cpus.
  requirements = Cpus >= 3 && (PartitionableSlot || Cpus <= 8)
  # Request up to 8 cpus out of a partitionable slot.
  request_cpus = Cpus > 8 ? 8 : Cpus
  queue

(HTCondor v8.4+ では動くと書いてあるけど、テストはしてないっす)