为什么从IDLE调用Numpy.loadtxt可以正常工作,而从Shell调用时为什么会给出IOError?

时间:2018-08-20 11:32:32

标签: python excel-vba shell numpy

我尝试执行以下操作:

1个VBA脚本使用调用shell

RetVal = Shell(fullpythonexepath & fullscriptpath)

2 Shell得到以下命令

fullpythonexepath & fullscriptpath

3 Python脚本

import numpy as np

thefilepath = "input.txt"    # is in the same folder as the script
theoutputpath = "output.txt" # is in the same folder as the script

ssc=np.loadtxt(thefilepath, delimiter='\t', skiprows=0, usecols=range(2)) #error line

#some other code to fit input data

np.savetxt(theoutputpath, sscnew, header=top, fmt='%1.2f\t%1.2f') 

运行此命令时,不会打印输出文件,这意味着脚本无法正常运行。

现在可笑的是:当我从IDLE运行python脚本时,它运行正常。当我使用以下命令从外壳运行它时:

fullpythonexepath & fullscriptpath

它说:

enter image description here

  • 我尝试输入input.txt和output.txt的完整路径。当我这样做并在IDLE中运行它时,不再找到该文件。从外壳调用时,它也不起作用。

  • Python显然未找到input.txt的路径

  • 据我所知,该问题与VBA无关。使用shell命令时也会发生该错误

解决方法是:

import os 
os.chdir(r"fullpath")

在脚本中,将当前工作目录更改为我的路径,然后找到input.txt。

1 个答案:

答案 0 :(得分:2)

从外壳启动脚本时,脚本的工作目录将是调用该目录的目录。 大多数IDLE都定义了自己的工作目录。 要检查,我建议您这样做:

os.getcwd()

在两种情况下,并查看两种情况下使用的目录