Я работаю в системе, в которой есть Jython2.5, но мне нужно иметь возможность вызывать некоторые из API Google, поэтому я написал автономный скрипт, который я хотел бы вызвать из моей среды Jython и вернуть мне небольшие кусочки данных , Например, JobID, URL-адрес листа или что-то из Google.
Я пробовал несколько вещей, но я всегда получаю сообщение об ошибке от Windows, в котором говорится, что он не может найти указанный файл.
Путь делается двумя способами.
Первый способ с использованием строки
stringPath = r"C:\GooglePipes\Scripts\filetobq.py C:\GooglePipes\Keys\DEV-BigQueryKey.json nofile C:\GooglePipes\BQ_Downtime\TESTFILE.CSV dataset1 table1"
И второй способ, как последовательность (согласно документам, используя shell=false
предоставить последовательность)
seqPath = [r"C:\GooglePipes\Scripts\filetobq.py",r"C:\GooglePipes\Keys\DEV-BigQueryKey.json","nofile",r"C:\GooglePipes\BQ_Downtime\TESTFILE.CSV","dataset1","table1"]
Вызывается с
data, err = Popen(seqPath, shell=True, stderr=PIPE, stdout=PIPE).communicate()
#Read values back in
print data
print err
Замена seqPath
на stringPath
, чтобы попробовать его в любом случае.
Я был на этом все выходные, каждый раз, когда я запускаю его, я получаю из Windows
The system cannot find the path specified.
из печати err
. Я не смог отладить намного дальше, чем это. Я не совсем уверен, что происходит. Когда я вставляю переменную stringPath
непосредственно в командное окно моего компьютера, она запускается.
Я также позвонил subprocess.list2cmdline(seqPath)
, чтобы посмотреть, что он выводит. Это дает мне? перед строкой, но я не смог понять, что это значит. Я могу вставить остальную часть строки, начиная с вопросительного знака, в командное окно, и оно выполнится.
?C:\GooglePipes\Scripts\filetobq.py C:\GooglePipes...
Я пробовал несколько различных комбинаций true и false на оболочке, передавая различные аргументы в Popen
, двойные слэши, и у меня не менее 30 открытых вкладок из-за переполнения стека и других справочных форумов. Я просто не знаю, что делать на этом этапе, и любая помощь приветствуется.
Редактировать
? в начале строки - символ NULL, когда я делал дополнительные записи. Кажется, это корень моей проблемы. Я не могу понять, почему это появляется, но это присутствовало в моих копиях. Я начал печатать вручную, и у меня все заработало. Когда я передаю путь моей программой Jython, он снова появляется.