8
Popen的docs提到你不能指定相對於'change working directory'kwarg的可執行路徑。subprocess.Popen使用相對路徑
如果
cwd
不是沒有,在執行之前,孩子的當前目錄將變更爲cwd
。 請注意,在搜索可執行文件時,此目錄不是 ,因此您無法指定 程序相對於cwd
的路徑。
但是Python是我的系統上的行爲似乎直接反駁這種說法:
[email protected]:/tmp$ mkdir a
[email protected]:/tmp$ cp /bin/ls /tmp/a/my_ls
[email protected]:/tmp$ mkdir b
[email protected]:/tmp$ touch /tmp/b/potato
[email protected]:/tmp$ cd /home/wim
[email protected]:~$ python
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import check_output
>>> check_output(['../a/my_ls'], cwd='/tmp/b')
'potato\n'
>>> check_output(['../a/my_ls'])
OSError: [Errno 2] No such file or directory
是使用相對路徑來cwd
東西是平臺相關的,不應被依賴?或者這是一個文檔錯誤?
(這個問題從評論通過glglgl here派生)