2017-11-26 7 views
-1

pyinstallerを使ってpythonプログラムをexeに変換しました。私のexeファイルを保存する一時的なフォルダ_MEIxxxxxを作成します。同じフォルダにはプログラムによって変更されているファイルがありますが、残念ながらそれは起こっていません。プログラムで は、私は上記のフォルダに移動するフォルダを変更します。python exe in windows not writng

os.chdir('C:\\Users\\Public') 
for foldername in os.listdir(): 
if foldername.startswith('_MEI'): 
    myfolder = foldername 
    os.chdir('C:\\Users\\Public'+myfolder+'\\Quiz') 

感謝を事前に。

+2

これらのWindowsディレクトリをハードコードしないでください。それらは異なるかもしれません。 env.variablesを使用します。ここのエラー:バックスラッシュがありません。 os.path.joinを使用する –

答えて

1

これは動作しません:

os.chdir('C:\\Users\\Public'+myfolder+'\\Quiz') 

myfolderは、開始時に\が含まれていないため。

C:\Users\Publicをハードコードしないでください。PUBLICを入力してください。 var

chdirを避けると、すべてのモジュール間で共有されるグローバル変数と同等です。いくつかのモジュールが1つの現在のディレクトリを必要とする場合はどうなりますか?

あなたの試行は、python cd xxx; ls; ...に移植されたシェルスクリプトのようになります。この習慣を壊す。

絶対パス/パスをパラメータとして渡します。私の提案:

pubdir = os.getenv("PUBLIC") 
for foldername in os.listdir(pubdir): 
    if foldername.startswith('_MEI'): 
     myfolder = foldername 
     quizdir = os.path.join(pubdir,myfolder,'Quiz') 
     # now do something with quizdir 

し、システムコールを実行するための絶対的なディレクトリが必要な場合は、subprocess機能はそのためcwdパラメータを持っています。したがって、時間の99%をos.chdirで避けることができます。