2016-11-03 6 views
-1

[os.path.expanduser]を使用して、自分以外のコンピュータでさまざまなGDALプロセスを実行したいと考えています。しかし、別のPCでテストを実行すると、C:\ Users \ Kosher_Mosesの代わりにスペースを含むユーザー名の問題が発生しました。ユーザー名はC:\ Users \ Kosher Mosesです。どのように私はスクリプトがこの問題を過ぎて移動することができます上の任意のアイデア?ユーザー名にスペースがある場合のos.path.expanduserの使用

# Set varible for gdal_calc 

gdal_calc = "C:\\Program Files (x86)\\GDAL\\gdal_calc.py" 

# make dictionary of environmental variables 
gdal_env = os.environ.copy() 

# modify and add variables 
gdal_env["GDAL_DATA"] = "C:\\Program Files (x86)\\GDAL\gdal-data" 
gdal_env["GDAL_DRIVER_PATH"] = "C:\\Program Files (x86)\\GDAL\\gdalplugins" 
gdal_env["PATH"] = gdal_env["PATH"] + ";C:\\Program Files (x86)\\GDAL" 

# Set constants 
# The pathway to the images files are nested within the '--outfile=' command 

inHVZero = os.path.expanduser('~\\Desktop\\Components\\Zeros\\newHVZeros_.img') 
outPlace = os.path.expanduser('~\\\Desktop\\Components\\db_Files\\newHVdB.img') 
outVFile = '--outfile='+ outPlace 
cmd_HV = ['-A', inHVZero, outVFile, '--calc=10*log10(power(A,2))-83'] 
#calc_cmd_HV = ['C:\\Program Files (x86)\\GDAL\\gdal_calc.py', '-A', inHVZero, '--outfile='+outPlace, '--calc=10*log10(power(A,2))-83'] 

inVHZero = os.path.expanduser('~\\Desktop\\Components\\Zeros\\newVHZeros_.img') 
outPlace_1 = os.path.expanduser('~\\Desktop\\Components\\db_Files\\newVHdB.img') 
outVFile_1 = '--outfile='+ outPlace_1 
cmd_VH = ['-A', inVHZero, outVFile_1, '--calc=10*log10(power(A,2))-83'] 
#calc_cmd_VH = ['C:\\Program Files (x86)\\GDAL\\gdal_calc.py', '-A', inVHZero, '--outfile='+outPlace_1, '--calc=10*log10(power(A,2))-83'] 


subprocess.call([sys.executable,gdal_calc] + cmd_HV, env=gdal_env) 
subprocess.call([sys.executable,gdal_calc] + cmd_VH, env=gdal_env) 
+2

文字列ベースの呼び出しを使用しないでください。コマンドの引数のリストを渡すと問題にはなりません。離散引数は空白を心配する必要がないからです。 'サブプロセス'ドキュメントを読んでください、彼らはたくさんの例を持っています。 – ShadowRanger

+0

ガイダンスをありがとうございます。 –

答えて

1

はしないでください。

cmd = "-ot float32 -of HFA" 
hvfullCmd = ' '.join([gdalTranslate, cmd, src_dataset.fileName, dst_dataset]) 
subprocess.call(hvfullCmd) 

の操作を行います。

cmd = ['-ot', 'float32', '-of', 'HFA'] 
subprocess.call([gdalTranslate] + cmd + [src_dataset.fileName, dst_dataset]) 
+0

同様の方法でtkinterを使わずにgdal_calcを実行したい場合、スクリプトが自動的にファイルを選択するようにするにはどうすればよいですか? 私は上記の私の質問で参照しているコード行を追加しました。 –

関連する問題