首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >执行子进程在Windows上找不到指定的文件

执行子进程在Windows上找不到指定的文件
EN

Stack Overflow用户
提问于 2019-03-25 05:05:45
回答 1查看 251关注 0票数 1

我在一个安装了Jython2.5的系统中工作,但我需要能够调用Google的一些apis,所以我编写了一个离线脚本,希望从我的Jython环境中调用该脚本并将小块数据返回给我。比如一个JobID或者一个工作表网址或者来自谷歌的其他东西。

我已经尝试了很多方法,但是我总是从Windows得到一个错误,说它找不到指定的文件。

Path有两种方式。

第一种使用字符串的方法

代码语言:javascript
复制
stringPath = r"‪C:\GooglePipes\Scripts\filetobq.py C:\GooglePipes\Keys\DEV-BigQueryKey.json nofile C:\GooglePipes\BQ_Downtime\TESTFILE.CSV dataset1 table1"

第二种方式,作为一个序列(根据文档,使用shell=false提供一个序列)

代码语言:javascript
复制
seqPath = [r"‪C:\GooglePipes\Scripts\filetobq.py",r"C:\GooglePipes\Keys\DEV-BigQueryKey.json","nofile",r"C:\GooglePipes\BQ_Downtime\TESTFILE.CSV","dataset1","table1"]

使用

代码语言:javascript
复制
data, err = Popen(seqPath, shell=True, stderr=PIPE, stdout=PIPE).communicate()


#Read values back in
print data
print err

stringPath替换seqPath来尝试这两种方式。

我整个周末都在做这件事,每次我运行它的时候,我都会从Windows上得到它

代码语言:javascript
复制
The system cannot find the path specified.

err打印。我已经不能比这更进一步的调试了。我不太确定发生了什么。当我将stringPath变量直接粘贴到计算机的命令窗口中时,它就会执行。

我还调用了subprocess.list2cmdline(seqPath)来查看它的输出。它给了我一个?在字符串的前面,但我还不能理解这是什么意思。我可以将字符串的其余部分从问号后面开始粘贴到命令窗口中,然后它就会执行。

代码语言:javascript
复制
?C:\GooglePipes\Scripts\filetobq.py C:\GooglePipes...

我在shell上尝试了许多不同的true和false组合,将不同的参数传递到Popen中,双斜杠,我从堆栈溢出和其他帮助论坛中打开了不少于30个选项卡。我只是不知道在这一点上该做什么,任何帮助都是非常感谢的。

编辑

那个?在我做一些额外的日志记录时,这个字符串的开头实际上是一个空字符。这似乎是我问题的根源。我不知道为什么它会出现,但它出现在我的拷贝粘贴中。我开始手动打字,我让它工作了。当我用我的Jython程序提供路径时,它又出现了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 08:42:11

最终,错误是?/NULL字符。

我回到了源值,在那里程序抓住了路径,它就在那里。在我手动重新键入后,一切都开始正常工作。

如果您复制并粘贴我在问题中放入的内容,如果您通过string->ASCII转换器运行它,您可以看到字符串中的空字符。

代码语言:javascript
复制
>C:
>NULL 67 58 

真是一堆胡说八道*。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55328572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档