私はPython 2.7を使用しています
Python から StatTransfer プログラムを実行しようとしています。
私がしようとすると:
tempname = os.path.abspath('./text.txt')
TEMPFILE = open(tempname, 'wb')
try:
subprocess.check_call('ST convert.stc', shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
except:
raise CritError(messages.crit_error_bad_command)
失敗します (CritError はユーザー定義です)。
トレースバックは私に有用なことを何も教えてくれません:
Traceback (most recent call last):
File "C:\...\py\run_program.py", line 181, in run_stcmd
run.execute_run(current_directory, posix_command, nt_command)
File "C:\...\py\private\runprogramdirective.py", line 99, in execute_run
raise CritError(messages.crit_error_bad_command)
CritError: 'ERROR! Cannot execute command'
ただし、関連する行を次のように変更します。
subprocess.call('ST convert.stc', shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
正常に実行されます。
面白いことに、両方のケースで TEMPFILE に同じことが表示されます。
|/-|/-|/-|/-|/- |/-|/-|/-|/-|/- Stat/Transfer - Command Processor (c) 1986-2011 Circle Systems, Inc.
www.stattransfer.com
Version 10.1.1866.0714 (32 Bit) - 64 Bit Windows
Serial: ADR4H-L3A3A-N8RJ
User: XXXXXXXXXXX
Your license is in its grace period -- Please call Circle Systems
Your program will die at the end of the month
Status: Temporarily OK (Expired May 31, 2012)
Transferring from SPSS Portable File: ..\orig\10908970\ICPSR_03775\DS0001\03775-0001- Data.por
Input file has 26 variables
Optimizing...
Transferring to Stata: ..\data\ABCFeb.dta
504 cases were transferred(0.02 seconds)
Windows コマンド ラインから "st convert.stc" を実行すると、問題なく実行され、上記と同じログ メッセージが表示されることに注意してください。convert.stc 内に書かれていることを実現します。
これは、StatTransfer プログラムが subprocess.check_call で呼び出されたことを示しています。ただし、最後にエラーがあります。これはどのようなエラーですか? どうすれば回避できますか? 2 つのコマンドのどちらを使用する必要があり、その理由は?
ETA : 以下のmgilsonに従って、subprocess.call から値を返し、-1 を取得します。これは何を意味するのでしょうか?プログラムがまだ実行されていて、実際のエラーに気付かなかったのはなぜですか?
ここでこれを行う方法について可能な説明と提案はありますか?
ありがとう。