如何通过python循环执行linux命令

时间:2018-07-24 06:49:44

标签: python linux shell

我有一个文件列表,这些文件将被另一个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更改此脚本?

2 个答案:

答案 0 :(得分:0)

您可以使用f-strings文字:

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')

答案 1 :(得分:0)

就我而言,以下方法有效。

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 :允许编辑源文件

  • + :是定界符。

  • 呼叫:以数组格式接收命令。

例如:如果您想运行ls -l input.txt

call(['ls', '-l', file])

我希望以上信息对您有用。