Is it a good style to run external commands in Python?
No, it is a security risk, and furthermore, os.popen() has been deprecated since Python 2.6.  The replacement is to use the subprocess module.

The security risk is that os.popen() expects its command as a string.  That means that the command will be interpreted by a shell to split it up into the command and its arguments.  If report_file, report_dir, or _export_dir contain any spaces or characters with a special meaning to the shell, horrible unexpected things can happen, including arbitrary command execution.