Python调用shell脚本 - 没有目录?

时间:2011-05-15 19:26:02

标签: python bash find subprocess

在python脚本中,我按如下方式调用bash脚本:

subprocess.Popen(["./scan.sh", dir])

在该脚本中,有

find $1 -name "*013*.txt" > found_files.txt

由于某种原因,python中的dir参数被转换为bash脚本中带引号的版本。在python中打印'dir'会产生用户输入的确切路径:

~/Desktop/Files

然而,找不到

find: '~/Desktop/Files' no such directory

使用〜/ Desktop / Files手动运行scan.sh作为参数正常工作。为什么如何引用它??

2 个答案:

答案 0 :(得分:8)

没有。发生的事情是~没有被解释,因为这是shell的工作。使用os.path.expanduser()扩展路径,然后再将其传递给subprocess

答案 1 :(得分:0)

使用$ HOME。 '〜'不是用引号扩展,也不是用双引号扩展。

python -c "import subprocess;subprocess.Popen(['./scan.sh', '~'])"
python -c "import subprocess;subprocess.Popen(['./scan.sh', '$HOME'])"

我的scan.sh包含:

#!/bin/sh
echo =$1=

第一个打印=~=,第二个=/Users/jomo=