前提・実現したいこと
pythonでファイルの中身の文字列を置換するものを作りました
そこでは
python3 replace.py test a b
と実行することで
test という名前のファイルの
aをb に置換するというものです
ここまでは完成しているのですが
file名 s
test a b
があったときに
python3 replace.py | cat s
と実行しても上手くいきません
何故なのでしょうか できない理由がわかりません
(どうすることによって解決するのでしょうか)
macbookでの実行です
試したこと
javaでの同様なファイルによって
java name | cat txtfile
ということはできることは確認しています
python特有のものなのか...と思っています
発生している問題・エラーメッセージ
私の認識では これは純粋にパイプによって読み込みができていないと思っています(認識違いでしょうか?)
test a bTraceback (most recent call last): File "replace.py", line 5, in <module> file_name = args[1]; IndexError: list index out of range
該当のソースコード
今回は複数のものを一括で置換しようと思ったので複数コマンドを受け付けるように作りました
python
1import sys 2import re 3args = sys.argv 4 5file_name = args[1]; 6end = (len(args)-1)//2 + 1; 7 8with open(file_name) as f: 9 data_lines = f.read() 10 11for i in range(1,end): 12 13 # 文字列置換 14 data_lines = re.sub(args[i*2], args[i*2+1],data_lines) 15 # 実行がどれくらい終わったかどうか 16 print("fin : " + str(i) + " | " + args[i*2]+" : "+args[i*2+1]) 17 18# 同じファイル名で保存 19with open(file_name, mode="w") as f: 20 f.write(data_lines) 21
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/03 12:57