繁体   English   中英

执行python列表中的bash命令

Execute bash commands that are within a list from python

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有这个清单

commands = ['cd var','cd www','cd html','sudo rm -r folder']

我试图将其中的所有元素作为bash脚本一一执行,但没有成功。 我在这里需要for循环吗?

如何实现?,谢谢大家!!!!

3 个回复
for command in commands:
    os.system(command)

是您可以执行此操作的一种方法...尽管仅将CD压缩到一堆目录中并不会产生很大的影响

注意,这将在其自己的子外壳中运行每个命令……因此它们将不记得其状态(即任何目录更改或环境变量)

如果您需要将它们全部运行在一个子shell中,则需要将它们与“ &&”链接在一起

os.system(" && ".join(commands)) # would run all of the commands in a single subshell

如注释中所述,通常最好将子流程模块与check_call或其他变体之一一起使用。 但是在这种特定情况下,我个人认为您与其他人之间的os.system是6比1,而os.system键入较少(无论您使用的是python3.7还是python2.5,它都会存在...但是在一般情况下,使用哪个subprocess确切取决于哪个调用可能取决于您所使用的python版本...在@triplee的评论中链接的帖子中有一个很好的描述, 为什么您应该改用子进程)

真的,您应该重新格式化您的命令以简单地

commands = ["sudo rm -rf var/www/html/folder"]注意,您可能需要将python文件添加到sudoers文件中

我也不确定您要在这里完成什么...但是我怀疑这可能不是实现它的理想方法(尽管它应该可以工作...)

这只是一个建议,但是如果您只想更改目录并删除文件夹,则可以使用os.chdir()shutil.rmtree()

from os import chdir
from os import getcwd
from shutil import rmtree

directories = ['var','www','html','folder']

print(getcwd())
# current working directory: $PWD

for directory in directories[:-1]:
    chdir(directory)

print(getcwd())
# current working directory: $PWD/var/www/html

rmtree(directories[-1])

它将cd进入html和delelte folder三个目录。 当您调用chdir() ,当前工作目录会更改,如调用os.getcwd()

declare -a command=("cd var","cd www","cd html","sudo rm -r folder")

## now loop through the above array
for i in "${command[@]}"
do
echo "$i"
# or do whatever with individual element of the array
done

# You can access them using echo "${arr[0]}", "${arr[1]}" also
1 来自python内部的bash命令

我正在寻找在python中使用bash命令的最佳方法。 有什么办法? 我知道os.system和subprocess.Popen。 我已经尝试过这些: 这将按预期返回a.bin,但之后也会调整为0,因此输出: 引导文件现在设置为0。下一次我打印引导文件时,它将显示为0。 ...

2 从python执行bash命令-OSError:[Errno 2]

我对Python很陌生。 当我执行以下命令以使用以下python代码获取x86服务器上的CPU核心总数时,出现以下错误; os.popen可以工作,但是我不想使用os.popen因为它在总核数的末尾不打印None ,我想省略/ ...

4 从python脚本中执行`pipenv`命令

我正在尝试自动化一堆Python存储库的安装: 我正在从另一个venv执行此操作,似乎软件包已安装在当前venv内。 实际上,我需要调用pipenv update来更新一堆Pipfile.lock上的Pipfile.lock ,但是在某些情况下根本没有设置venv。 任何提示如何在不干扰当前 ...

5 如何从python文件中执行bash?

我想知道是否有可能从python文件中执行bash代码。 我的意思不是运行完全不同的bash文件。 我正在寻找一种方法来轻松执行长度为一行或更长的bash代码。 具体来说,我想执行我今天早些时候提出的一个问题得到帮助的代码。 ...

6 如何从 Python 以非 root 用户身份执行 bash 命令?

我正在尝试使用 python 中的 aquatone。 当我使用 os 或 subprocess 从 VS Code 或终端运行它时,它工作正常。 但是当它从作为服务启动时启动的父程序启动时。 它不再起作用了。 我的猜测是这是由于父程序以 root 身份运行。 父程序需要 root 权限。 那么有什 ...

7 从 Rakefile 执行 bash 命令

我想从Rakefile执行一些bash命令。 我在我的Rakefile尝试了以下Rakefile 但是在执行rake hello时没有输出? 如何从 Rakefile 执行 bash 命令? 注意:这不是重复的,因为它专门询问如何从Rakefile执行 bash 命令。 ...

8 从python中运行几种类型的bash命令

我想在python3中运行bash命令。 但是,不同的命令具有不同的输出类型,并且需要以不同的方式调用(据我所知)。 例如: 有什么更好的方法来制作它,以便与命令无关地正确处理它? (显示nano,或获取grep的输出)? ...

9 将bash命令存储在python列表中

我想运行bash命令并将其输出附加到列表中。 我试过了 但v将是(0,“ file1 \\ nfile2 \\ ndir1 \\ n”)的输出 我可以处理v中的第1个(基于第0个)元素,但这意味着我必须扫描字符串。 我想知道是否有更Python的方式来解决这个问题。 我不必c ...

10 在bash脚本中执行python

我需要在shell脚本中执行以下代码。 通常,在诸如node.js之类的语言中,我可以编写node -e "code here"的代码node -e "code here"来执行代码。 如何使用Python复制此功能? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM