运行 shell 在每个文件上循环执行命令,将每个文件从标量转换为相应的 csv
Running shell command in a loop on every files to convert every file from scalar to corresponding csv
我需要完成以下任务,将不胜感激。
我运行一个shell命令作为
scavetool x A.sca -o A.csv
这个带有 scavetool 的命令将标量文件转换为我的 Ubuntu 终端上相应的 csv 文件。例如,在 运行 执行此命令后,它将 A.sca
文件转换为相应的 A.csv
同名文件,但只是将扩展名更改为 .csv.
因此,我有 100
个文件,完全像这样 A-#0.sca
、A-#1.sca
A-#2.sca
等等,直到 100 个,我想将它们转换成相应的 csv
A-#0.csv
、A-#1.csv
、A-#2.csv
等文件直至 100
。
我需要在 Python 中执行此操作,并且我知道如何 运行 python 脚本中的终端命令,该脚本通过 os.system
执行,如下所示:
例如 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
文件。
请帮助实现这一目标。
试试这个:
import subprocess, glob
for file in glob.glob('*.sca'):
command = 'scavetool x {}.sca -o {}.csv'.format(file[:-4], file[:-4])
subprocess.call(command, shell=True)
血糖指数:)
您用 glob.glob("*.sca")
搜索文件,所以您知道所有文件都将以 .sca
结尾。诀窍就是忘记所有文件名的最后 3 个字符并添加正确的扩展名。顺便说一句,format
很乐意重复多次相同的替换,前提是您在大括号 ({i}
) 内给出数字。代码可以变成
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
我需要完成以下任务,将不胜感激。
我运行一个shell命令作为
scavetool x A.sca -o A.csv
这个带有 scavetool 的命令将标量文件转换为我的 Ubuntu 终端上相应的 csv 文件。例如,在 运行 执行此命令后,它将 A.sca
文件转换为相应的 A.csv
同名文件,但只是将扩展名更改为 .csv.
因此,我有 100
个文件,完全像这样 A-#0.sca
、A-#1.sca
A-#2.sca
等等,直到 100 个,我想将它们转换成相应的 csv
A-#0.csv
、A-#1.csv
、A-#2.csv
等文件直至 100
。
我需要在 Python 中执行此操作,并且我知道如何 运行 python 脚本中的终端命令,该脚本通过 os.system
执行,如下所示:
例如 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
文件。
请帮助实现这一目标。
试试这个:
import subprocess, glob
for file in glob.glob('*.sca'):
command = 'scavetool x {}.sca -o {}.csv'.format(file[:-4], file[:-4])
subprocess.call(command, shell=True)
血糖指数:)
您用 glob.glob("*.sca")
搜索文件,所以您知道所有文件都将以 .sca
结尾。诀窍就是忘记所有文件名的最后 3 个字符并添加正确的扩展名。顺便说一句,format
很乐意重复多次相同的替换,前提是您在大括号 ({i}
) 内给出数字。代码可以变成
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