ホーム>source

私は次のことをしようとします:

1 VBAスクリプトは、シェルを使用してシェルを呼び出します
RetVal = Shell(fullpythonexepath & fullscriptpath)

2 Shell get follwingコマンド
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

それは言う:

  • input.txtおよびoutput.txtへのフルパスを入力してみました。これを実行してIDLEで実行すると、ファイルはもう見つかりません。シェルから呼び出された場合も機能しません。

  • Pythonは明らかにinput.txtへのパスを見つけられません

  • 私の理解では、この問題はVBAとは関係ありません。このエラーは、シェルコマンドの使用時にも発生します

解決策は置くことでした:

import os 
os.chdir(r"fullpath")

スクリプトに現在の作業ディレクトリをパスに変更すると、input.txtが見つかります。

あなたの答え
  • 解決した方法 # 1

    シェルからスクリプトを開始すると、スクリプトの作業ディレクトリは、呼び出し元のディレクトリになります。 ほとんどのIDLEは、独自の作業ディレクトリを定義します。 確認するには、次のことをお勧めします。

    os.getcwd()
    
    

    両方のケースで、両方のケースでどのディレクトリが使用されているか見てください

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ node.js - Nodejs/JavaScriptを使用してこのデータをcsvに変換する方法