我在一个拥有Jython2.5的系统中工作,但是我需要能够调用一些Google的api,所以我编写了一个我想从Jython环境调用的离线脚本,并返回给我一小段数据。像JobID或工作表网址或来自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...
我在shell上尝试了许多不同的true和false组合,将不同的args传递给Popen
,双斜线,并且我从堆栈溢出和其他帮助论坛打开了不少于30个选项卡。我只是不知道该做什么,任何帮助表示赞赏。
的?当我做一些额外的日志记录时,在sting开始时实际上是一个NULL字符。这似乎是我问题的根源。我无法弄清楚它出现的原因,但它出现在我的副本中。我开始手动打字,我开始工作了。当我用Jython程序提供路径时,它再次出现。
最终错误是?/ NULL字符。
我回到了源程序,该程序正在抓住路径并且它存在于那里。在我手动重新键入后,一切都开始工作了。
如果您复制并粘贴我在问题中添加的内容,如果您通过字符串 - > ASCII转换器运行它,则可以在字符串中看到NULL字符。
>C:
>NULL 67 58
真是一堆废话***。