gpt4 book ai didi

python - 在 Windows 上执行子进程找不到指定文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:04 24 4
gpt4 key购买 nike

我正在一个具有 Jython2.5 的系统中工作,但我需要能够调用一些 Google 的 api,因此我编写了一个离线脚本,我想从我的 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...

我在 shell 上尝试了多种不同的 true 和 false 组合,将不同的参数传递给 Popen、双斜杠,并且我从堆栈溢出和其他帮助中打开了不少于 30 个选项卡论坛。我现在不知道该怎么做,非常感谢任何帮助。

编辑

那个?当我做了一些额外的日志记录时,刺痛的开头实际上是一个 NULL 字符。这似乎是我的问题的根源。我不明白为什么它会出现,但它出现在我的复制粘贴中。我开始手动打字,并且成功了。当我使用 Jython 程序提供路径时,它再次出现。

最佳答案

最终错误是 ?/NULL 字符。

我回到了程序正在获取路径的源值,并且它存在于那里。当我手动输入后,一切都开始工作了。

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

>C:
>NULL 67 58

真是一堆废话***。

关于python - 在 Windows 上执行子进程找不到指定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55328572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com