在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作为参数正常工作。为什么如何引用它??
答案 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=
。