[英]how to execute linux command via python loop
我有一個文件列表,這些文件將被另一個 linux 腳本用來提取,如下所示:
gzip -dc input/test_log.gz | bin/recreate state/object_mappings.sort > output/recreate.out
我需要使用 python 循環的文件列表更改名稱test_log.gz
,如何動態執行此腳本。 這是我的代碼:
import os
from subprocess import call
files = os.listdir("/my directory/")
files.sort()
for i in files:
call('gzip -dc input/test_log.gz | bin/recreate state/object_mappings.sort > output/recreate.out')
我不知道如何使用動態變量 i 更改此腳本?
您可以使用f-string
文字:
import os
from subprocess import call
files = os.listdir("/my directory/")
files.sort()
for file in files:
call(f'gzip -dc {os.path.abspath(file)} | bin/recreate state/object_mappings.sort > output/recreate.out')
在我的情況下,以下方法有效。
from subprocess import call
files = ['input.txt', 'input1.txt', 'input2.txt', 'input3.txt']
for file in files:
call(['sed', '-i', 's+NameToBeReplaced+NewName+', file])
sed : 是流編輯器
-i : 允許編輯源文件
+ : 是分隔符。
call :采用數組格式的命令。
例如:如果你想運行ls -l input.txt
call(['ls', '-l', file])
希望以上信息對你有用😃。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.