При выполнении подпроцесса не удается найти указанный файл в Windows - PullRequest
1 голос
/ 25 марта 2019

Я работаю в системе, в которой есть 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, он снова появляется.

1 Ответ

0 голосов
/ 25 марта 2019

В конечном итоге ошибка была символом? / NULL.

Я вернулся к исходному значению, где программа захватывала путь, и он там присутствовал.После того, как я вручную ввел его, все начало работать.

Если вы скопируете и вставите то, что я поставил в вопросе, вы увидите символ NULL в строке, если вы пропустите его через строку-> ASCIIконвертер.

>C:
>NULL 67 58 

Что за фигня ***.

...