Search code examples
pythonpython-3.xlinuxrhel

python + how to pass variable in to os.system command


here is simple example how to re-scan disk sda from python script

#!/usr/bin/python3

import subprocess
import os



command = "echo 1 > /sys/block/sda/device/rescan"
os.system(command)

in case we want to set the disk as variable as disk_name

#!/usr/bin/python3

import subprocess
import os

disk_name = sda
command = "echo 1 > /sys/block/disk_name/device/rescan"
os.system(command)

then what is the rights approach to pass the disk_name variable in to command ? , or maybe other better approach ?

we tried as the following but without success

command = " 'echo 1 > /sys/block/' + str(disk_name) + '/device/rescan' "
os.system(command)

Solution

  • Using your syntax (just remove the double-quotes, there is your mistake):

    command = 'echo 1 > /sys/block/' + str(disk_name) + '/device/rescan'
    os.system(command)
    

    But you can use an F-string to make it cleaner:

    command = F"echo 1 > /sys/block/{disk_name}/device/rescan"
    os.system(command)