我有一个文件列表,这些文件将被另一个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更改此脚本?
答案 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])
我希望以上信息对您有用。