2017-01-06 3 views
1

バッチファイルをスタートアップフォルダに入れるプログラムがあります。Pythonがファイルを作成すると、起動時にのみ致命的なエラーが発生しますか?

Fatal Error: Python failed to execute the script 

私が作成してへの書き込み機能であることに、それを絞り込む:手動でプログラムが、ときに、すでに「スタートアップ」フォルダ内を起動し、それは私が次のエラーを取得する起動時に自動的に起動したときにこれは動作しますバッチファイルそのものですが、プログラムがスタートアップフォルダに既に入っているときにはこの機能は役に立ちませんが、 "if"ステートメントを使ってそのことが起こらないようにしています。ここで

は、関数のコードです:ここで

def moveIO(): 
    move = open('moveIO.bat','w') 
    move.write('move /Y "' + str(dirName) + '\\FPSBooster.exe" "' + str(targetPath) + '\\Microsoft\\Windows\\Start Menu\\Programs\\Startup"') 
    move.close() 

は、変数やプログラムがstratupフォルダに既に存在するかどうかを検出する「IF」の文です:

dirName = os.path.dirname(os.path.abspath(__file__)) 
targetPath = os.getenv('APPDATA') 
if dirName != targetPath + '\\Microsoft\\Windows\\Start Menu\\Programs\\Startup': 
moveIO() 
+0

申し訳ありませんが、これはFPSBoosterが何をしていると宣伝されていますか? –

+0

これは、電卓アプリをスパムする小さなプログラムです。純粋にPythonとosモジュールを練習するために:) – Chaost

+0

ありがとう!それは名前のために奇妙な選択です。 :) –

答えて

1

答えは、私たちが知ったように、欠落している情報の後ろに隠されていました。

OPはpyinstallerを使用していましたが、これは多くの問題を引き起こしました。これを削除し、pythonで適切にスクリプトを実行すると、問題が直接修正されました。

.exeにコンパイルされたCコードに変換するnuitkaを試してみて、一時ディレクトリを作成してPythonインタプリタをダンプするなどの問題を回避することをおすすめします。

+1

ありがとうございました!これは数ヶ月間私を悩ませている! – Chaost

0

はこれを試してみてください

move = open("moveIO.bat", "w+") 

w +:書き込みと読み取りの両方のためにファイルを開きます。ファイルが存在する場合は、既存のファイルを上書きします。ファイルが存在しない場合は、読み書き用の新しいファイルを作成します。

+0

残念ながら働かなかった。私は問題の可能性がある場合に私が使用している元の投稿に "if"ステートメントと変数を追加することができます – Chaost

関連する問題