Я использую subprocess
для запуска файла script.R
из test.py
.Мой test.py
выглядит как:
import subprocess
import pandas as pd
subprocess.call(["/usr/bin/Rscript", "--vanilla", "script.R"]) #line 3
df=pd.read_csv("output.csv") #line 4
script.R
идет как:
library(limma)
df <- read.csv("input.csv")
df<-normalizeCyclicLoess(df)
write.csv(df,"output.csv")
Когда я запускаю вышеуказанный файл (test.py
), я получаю ошибку:
FileNotFoundError: [Errno 2] File b'output.csv' does not exist: b'output.csv'
Я понимаю, что эта ошибка связана с тем, что файл output.csv
не существует в моем рабочем каталоге.Но я предполагаю, что он будет создан script.R
, что, вероятно, не происходит, потому что до завершения выполнения line 3
python переходит на line 4
.Для этого мы использовали справку из здесь , и, как уже упоминалось, мы используем call
для этого.Что тогда не так?Спасибо ...
EDIT : Я заметил, что если я не импортирую библиотеки в моем коде (например, limma
выше), все работает нормально.Я могу написать любой длинный код, как я хочу, и он не дает мне никакой ошибки и приступает к завершению.Но, как только я импортирую любую библиотеку, subprocess.call(....)
дает мне ненулевой результат (ноль означает, что процесс завершен).Для теста я изменил свой script.R
на library(limma)
(и ничего больше) (пробовал и для других библиотек - получил те же результаты), и он дал мне ненулевой результат.Таким образом, я думаю, что есть проблема с импортом библиотек, использующих subprocess
.Обратите внимание, что я могу запустить этот код R напрямую, и с моим кодом / библиотекой все в порядке.Пожалуйста, дайте мне несколько советов о том, что здесь может пойти не так ...