Improve Yourselves认知神经科学

Python在linux下批量执行指令

2018-07-17  本文已影响1人  Galory

今天在分析大鼠的DTI数据,其中有一步在linux下的指令时这样的,

flirt -in RAT5_b0 -ref RAT4_b0 -dof 12 -out RAT5to4 -omat RAT5to4.mat

在这个命令里,RAT5_b0是输入文件,每次都要变化;RAT4_b0是参考文件,在我的需要里这个是保持不变的;RAT5to4是输出文件,每次都要变化;RAT5to4.mat是生成的mat文件,也是每次都要重命名。

如果每次执行一次的话,就需要在电脑前等待,每次还要修改参数。

于是python就可以发挥了。

最开始想着是用linux下的shell脚本编写,但看了看shell的命令,与我而言还不如python方便,于是开始用python编写。

涉及到的知识点:

  1. 文件路径的读取
  • 在windows下,我们复制路径的话一般是这样的,C:\Windows\System32,但是在python编写时我们要转换成python可以读取的名字,转换过来就是C:/Windows/System32,可以注意到就是把反斜杠符号转换为斜杠,这只是一种方式,还有好几种:
- path = r"C:\Windows\temp\readme.txt"

- path1 = r"c:\windows\temp\readme.txt"

- path2 = "c:\\windows\\temp\\readme.txt"

- path3 = "c:/windows/temp/readme.txt"

2.字符串的转换
3.python调用linux系统指令

  1. python调用linux系统指令时参数的传递
#单参数
param = 'a single param'
os.system("This is a %s" % (param))
#多参数
param1 = 'parameter1'
param2 = 'parameter2'
param3 ='parameter3'
#假设xxx.py运行需要三个参数
os.system("python xxx.py %s %s %s" %(param1,param2,param3))

最终的代码:

# 20180717 By galory  Mail 996377370a@gmail.com
#This code is processing rat's DTI data 
import os
#设置待处理数据的路径
path = "/brain/zhanjunzhang/Desktop/galory/processing/"
#读取path路径下的全部文件名
files = os.listdir(path)
# s= []
#cmd = os.system("flirt -in 101b0.gz -ref 104b0.gz -dof 12 -out 101to104 -omat 101to104.mat")
for file in files:
    file1 = str(file)
    #取文件名的前三个字符用于重命名
    three_str = str(file1[0]+file1[1]+file1[2])
    if file != '104b0.nii.gz':
        # cmd
        print (file)
        #这里os.system()括号内的语句即最开始要在linux命令行输入的语句
        os.system("flirt -in %s -ref 104b0.nii.gz -dof 12 -out %s/%sto104 -omat %s/%sto104.mat" %(file,path,three_str,path,three_str))
#     os.system('ls')
# cmd = os.system("flirt -in 101b0.gz -ref 104b0.gz -dof 12 -out 101to104 -omat 101to104.mat")
# cmd = flirt -in 101b0.gz -ref 104b0.gz -dof 12 -out 101to104 -omat 101to104.mat

第一次认认真真写一个小的脚本简化任务,感觉很满足。先有一个需求,根据需求来想策略,最后一步一步有逻辑地写出来,遇到小问题一个一个解决,最终都会解决。

Practice makes perfect. 熟能生巧

Genuine knowledge comes from practice.

On the way.

上一篇 下一篇

猜你喜欢

热点阅读