おそらくこれに対する十分な質問や解決策があるかもしれませんが、私はこの1つの質問で自分自身を助けることはできません:私はbashスクリプトで使用している次のコマンドを持っています:
var=$(cat "$filename" | grep "something" | cut -d'"' -f2)
さて、いくつかの問題のため、すべてのコードをpythonに変換する必要があります。以前にpythonを使用したことはありませんが、postetコマンドが何をすることができるかまったくわかりません。pythonでそれを解決する方法はありますか?
式を翻訳するには、python言語とその標準ライブラリをよりよく理解する必要があります
cat "$ filename" :ファイルを読み取りますcat "$filename"
およびコンテンツを標準出力にダンプします
|
:パイプは、前のコマンドからstdout
をリダイレクトし、次のコマンドのstdin
に送ります
grep "something" :正規表現something
プレーンテキストデータファイル(指定されている場合)またはstdinを検索し、一致する行を返します。
cut -d '"' -f2 :特定の区切り文字で文字列を分割し、結果のリストから特定のフィールドをインデックス化/スプライスします
同等のPython
cat "$filename" | with open("$filename",'r') as fin: | Read the file Sequentially
| for line in fin: |
-----------------------------------------------------------------------------------
grep 'something' | import re | The python version returns
| line = re.findall(r'something', line)[0] | a list of matches. We are only
| | interested in the zero group
-----------------------------------------------------------------------------------
cut -d'"' -f2 | line = line.split('"')[1] | Splits the string and selects
| | the second field (which is
| | index 1 in python)
import re
with open("filename") as Origin_file:
for line in Origin_file:
line = re.findall(r'something', line)
if line:
line = line[0].split('"')[1]
print line
Pythonでは、外部依存関係がないため、次のようなものになります(テストされていません)。
with open("filename") as Origin:
for line in Origin:
if not "something" in line:
continue
try:
print line.split('"')[1]
except IndexError:
print
os.system
モジュールを使用してシェルコマンドを実行する必要があります
import os
os.system('command')
後で使用するために出力を保存する場合は、subprocess
モジュールを使用する必要があります
import subprocess
child = subprocess.Popen('command',stdout=subprocess.PIPE,Shell=True)
output = child.communicate()[0]
ファイルの行をループする必要があります。 stringメソッド について学ぶ必要があります
with open(filename,'r') as f:
for line in f.readlines():
# python can do regexes, but this is for s fixed string only
if "something" in line:
idx1 = line.find('"')
idx2 = line.find('"', idx1+1)
field = line[idx1+1:idx2-1]
print(field)
ファイル名をpythonプログラム に渡すためのメソッド)が必要です。また、その間、検索する文字列も...
将来的には、可能であればより焦点を絞った質問をするようにしてください。