簡體   English   中英

如何通過python循環執行linux命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM