gpt4 book ai didi

python - 在每个文件上循环运行 shell 命令,将每个文件从标量转换为相应的 csv

转载 作者:行者123 更新时间:2023-12-01 09:22:15 26 4
gpt4 key购买 nike

我需要完成以下任务,我们将不胜感激。

我运行 shell 命令scavetool x A.sca -o A.csv此命令与 scavetool 将标量文件转换为我的 Ubuntu 终端上相应的 csv 文件。例如,运行此命令后,它将 A.sca 文件转换为相应的同名 A.csv 文件,但仅扩展名更改为 .csv。 因此,我有 100 文件,其开头与 A-#0.scaA-#1.sca A-# 2.sca 等最多 100 个,我想将它们转换成相应的 csv 文件,例如 A-#0.csvA -#1.csvA-#2.csv 等,最多 100

我需要在 Python 中执行此操作,并且我知道如何通过 os.system 在 python 脚本中运行终端命令,如下所示:例如 os.system("command")

到目前为止我的代码看起来像这样。

#!/usr/bin/python3
import csv, os, glob
for file in glob.glob('*.sca'):
os.system('scavetool x *sca -o *.csv')

但是,问题是,它将我的所有标量文件转换为一个 .csv 文件,我知道这是因为 * 符号。但我也尝试过循环遍历每个文件,但没有得到所需的输出,因为通过循环我的 scavetool 命令提示,我无法将每个单独文件的输出作为单独的 csv 获取> 文件。

请帮助实现这一目标。

最佳答案

您可以使用 glob.glob("*.sca") 搜索文件,因此您知道所有文件都将以 .sca 结尾。诀窍是忘记所有文件名的最后 3 个字符并添加正确的扩展名。顺便说一句,只要您在大括号 ({i}) 内给出数字,format 很乐意重复多次相同的替换。代码可能会变成

for file in glob.glob('*.sca'):
command = "scavetool x {0}sca -o {0}csv".format(file[:-3])
print(command) # to control the command
# subprocess.call(command, shell=True) # and execute when it looks correct

关于python - 在每个文件上循环运行 shell 命令,将每个文件从标量转换为相应的 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50722088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com