【发布时间】:2016-10-28 15:21:11
【问题描述】:
我一直在尝试使用系统命令的输出将其用作下一部分命令的一部分。但是,我似乎无法正确加入它,因此无法正确运行第二个命令。使用的操作系统是 KALI LINUX 和 python 2.7
#IMPORTS
import commands, os, subprocess
os.system('mkdir -p ~/Desktop/TOOLS')
checkdir = commands.getoutput('ls ~/Desktop')
if 'TOOLS' in checkdir:
currentwd = subprocess.check_output('pwd', shell=True)
cmd = 'cp -R {}/RAW ~/Desktop/TOOLS/'.format(currentwd)
os.system(cmd)
os.system('cd ~/Desktop/TOOLS')
os.system('pwd')
错误是:
cp: missing destination file operand after ‘/media/root/ARSENAL’
Try 'cp --help' for more information.
sh: 2: /RAW: not found
/media/root/ARSENAL
第一个命令的读取似乎没问题,但它不能与 RAW 部分连接。我已经阅读了许多其他解决方案,但它们似乎是用于 shell 脚本的。
【问题讨论】:
-
有什么原因你不喜欢使用 Python 的
os.mkdir()、os.listdir()、os.getcwd()和shutil.copytree()? -
@Aya 不是真的,但复制部分有一个文件夹,不是吗?因为 RAW 文件夹在 cwd 中。我需要以某种方式加入它。我也无法使用 os.listdir,因为我需要检查文件夹 TOOLS 是否已创建
-
@Kode.Error404> Aya 的观点是,鉴于所有文件操作都可以直接在 python 中轻松完成,尝试调用外部工具来完成它们是愚蠢的。而且性能较差。而且更容易出错。而且便携性较差。
-
@Kode.Error404> 例如,您可以只使用
shutil.copytree('./RAW', '/home/some_user/Desktop/TOOLS')就可以了。 -
您可能想看看shutil 模块文档。它充满了对操作文件有用的功能。这比使用外部工具要容易得多。
标签: python linux command-line command concatenation