python - Tilde (~) isn't working in subprocess.Popen() -


when run in ubuntu terminal:

sudo dd if=/dev/sda of=~/file bs=8k count=200k; rm -f ~/file 

it works fine.

if run through pythons subprocess.popen():

output, err = subprocess.popen(['sudo', 'dd', 'if=/dev/' + disk, 'of=~/disk_benchmark_file', 'bs=8k', 'count=200k'], stderr=subprocess.pipe).communicate() print err 

it doesn't work. error is:

dd: failed open '~/disk_benchmark_file': no such file or directory

if change in popen() call tilde ~ /home/user, works!

why that? and more important me: how can make work? don't know user name in production.

you need wrap pathnames os.path.expanduser():

>>> import os >>> os.path.expanduser('~/disk_benchmark_file') '/home/dan/disk_benchmark_file' 

in code occurrence of:

['sudo', 'dd', 'if=/dev/' + disk, 'of=~/disk_benchmark_file', 'bs=8k', 'count=200k'] 

should replaced with:

['sudo', 'dd', 'if=/dev/' + disk, 'of=' + os.path.expanduser('~/disk_benchmark_file'), 'bs=8k', 'count=200k'] 

Comments

Popular posts from this blog

account - Script error login visual studio DefaultLogin_PCore.js -

xcode - CocoaPod Storyboard error: -