如何将python脚本的输出输出到Rscript中?

我正在编写一个bash脚本,它使用命令行input中的parameter passing给python脚本,结果是使用python的csv.writer模块生成一个.csv文件。 然后我写了一个R脚本,它自己接受一个.csv文件,但是现在我想直接从我的python脚本中将csv文件导入到我的r脚本中。

这是我的bash脚本:

#!/bin/bash python protparams.py $1 | Rscript frequency.r 

和我的Python脚本:

 from Bio import SeqIO from Bio.SeqUtils import ProtParam from Bio.SeqUtils import ProtParamData import sys import csv handle = open(sys.argv[1]) with open('test.csv', 'w') as fp: writer = csv.writer(fp, delimiter=',') for record in SeqIO.parse(handle, "fasta"): seq = str(record.seq) X = ProtParam.ProteinAnalysis(seq) data = [seq,X.get_amino_acids_percent(),X.aromaticity(),X.gravy(),X.isoelectric_point(),X.secondary_structure_fraction(),X.molecular_weight(),X.instability_index()] writer.writerow(data) 

这一切工作正常到这里我的Python脚本通过我的bash脚本调用时生成csv文件。 大! 但是当我把它pipe入下面的R脚本中,就像在我的bash文件中一样,我得到这个错误:

 Error in file(file, "rt") : cannot open the connection Calls: read.csv -> read.table -> file In addition: Warning message: In file(file, "rt") : cannot open file 'NA': No such file or directory Execution halted 

这里是我的R脚本供参考:

 args <- commandArgs(trailingOnly = TRUE) dat <- read.csv(args[1], header=TRUE) write.csv(dat, file = "out2.csv") 

(目前我的脚本只是testing,看它是否可以输出.csv文件)。

这个消息通常发生在文件不存在的情况下,但是在这种情况下,我认为它出现了,因为我的r脚本中的参数期望将一个文件作为命令行parameter passing – 这只是在当前没有获取我已经写了我的bash脚本。 我错了,认为pipe道输出我的Python程序是相同的使用输出作为我的R脚本的命令行参数?

非常感谢。

是的, frequency.R有点变化stdin (从stdin读取)允许复制.csv

 l@np350v5c:~$ cat foo.sh cat gbr_Country_en_csv_v2.csv | Rscript frequency.R l@np350v5c:~$ cat frequency.R f <- file("stdin") dat <- read.csv(f, header=TRUE) write.csv(dat, file = "out2.csv")