我读了很多关于如何在python中使用子进程模块运行linux shell命令的答案。在我的情况下,我需要在我的python代码中运行linux shell命令,以便在新终端中执行这些命令。
subprocess.call(["df","-h"]
我正在基本终端运行说xyz.py,当我执行上面的命令时,它会覆盖同一终端中xyz.py的输出。我希望此命令在不同的终端中执行,或者我想将此命令的输出存储在文本文件中。
subprocess.call(["df","-h",">","somefile.txt"])
以上命令无效。
编辑-1: 如果我将输出保存在文本文件中,我还必须通过python显示它。
谢谢!
答案 0 :(得分:2)
import subprocess
fp = open("somefile.txt", "w")
subprocess.run(["df", "-h"], stdout=fp)
fp.close
使用文件句柄。
如果要在保存输出时打印输出:
import subprocess
cp = subprocess.run(["df", "-h"], stdout=subprocess.PIPE)
print(cp.stdout)
fp = open("somefile.txt", "w")
print(cp.stdout, file=fp)
fp.close()
答案 1 :(得分:0)
你试过os.system吗?
os.system("gnome-terminal -e 'your command'")
答案 2 :(得分:0)
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// updateViewToLandscape();
// if(!needToHideNavBar()){
videoPlayerFragment.getPlayerImpl().root.getLayoutParams().height = getScreenHeight();
// draggablePanel.setTopFragmentResize(true);
draggablePanel.setTopViewHeight(getScreenHeight());
// draggablePanel.setBottomFragment(new Fragment);
draggablePanel.initializeView();
// draggablePanel.isClickToMaximizeEnabled();
// draggablePanel.isClickToMaximizeEnabled();
// hookDraggableViewListener();
// draggablePanel.getRootView().settou
// this.getWindow().setFlags(
// WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
// }
} else {
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
}
videoPlayerFragment.getPlayerImpl().root.getLayoutParams().height = 600;
draggablePanel.setTopViewHeight(600);
// draggablePanel.setBottomFragment(new Fragment);
draggablePanel.initializeView();
// draggablePanel.isClickToMaximizeEnabled();
// draggablePanel.isClickToMaximizeEnabled();
//hookDraggableViewListener();
// draggablePanel.setTopViewHeight(400);
//updateViewToPortrait(true);
// this.getWindow().clearFlags(
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
以上代码正常运作。如果有任何简单/有效的方法来做同样的事情,那将会很有帮助。