我有要在bash脚本中运行500次的代码(尽管目前我一直坚持要在bash中针对自己想要的内容进行for循环,所以我想我可以通过python自动制作更大的bash脚本) 。但是,我希望其中一部分随着500次迭代的进行更改-我有一个文件“ individual1”,该文件需要随每一行增加(因此,individual1,individual2,individual3等)
目前在python中,我已经简单地完成了:
x = 'plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt
--recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam individual1.txt'
text = ((x+'\n')*500)
f = open("bash.txt", "r")
out = open("outfile.bg", "w")
for line in f:
out.write("DBPH" + 1)
out.close()
print(text)
f.close()
尽管我知道此for循环根本不正确,但是从尝试从此处的类似问题中学习之后,我仍然不确定下一步该如何获取它。
文本文件中的输出如下所示:
plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt
--recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam individual1.txt
plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt
--recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam individual2.txt
所以我得到了personal1,individual2等。任何帮助/指导将不胜感激。
答案 0 :(得分:1)
这是一个小脚本,用于在运行脚本的目录中输出该文件。
x = 'plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt --recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam '
times_written = 1
out = open("outfile.bg", "w")
while times_written - 1 < 500:
out.write(F"{x}individual{times_written}.txt\n")
times_written += 1
out.close()
此块将产生如下输出:
plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt
--recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam individual1.txt
plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt
--recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam individual2.txt
此代码将执行相同的操作,但中间有一个空格:
x = 'plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract
snps.txt --recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam '
times_written = 1
out = open("outfile.bg", "w")
while times_written - 1 < 500:
out.write(F"{x}individual{times_written}.txt\n\n")
times_written += 1
out.close()
这将产生如下输出:
plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt
--recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam individual1.txt
plink --bed chr${ID}.bed --bim chr${ID}.bim --fam chr${ID}.fam --extract snps.txt
--recode vcf-iid --out output${indiv}chr${ID}vcf --keep-fam individual2.txt
编码愉快。另外,这里还有一个有关Python文件I / O https://www.tutorialspoint.com/python3/python_files_io.htm的有用信息的链接。