- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
第 17.1.1.1 节。的 documentation状态:
If shell is True, the specified command will be executed through the shell. This can be useful if you are using Python primarily for the enhanced control flow it offers over most system shells and still want convenient access to other shell features such as shell pipes, filename wildcards, environment variable expansion, and expansion of ~ to a user’s home directory.
但是,在 cygwin 上,bash 的输出与 Python 的子进程 的输出不同,即:
bash :
$ ls -ls ~rbarakx
total 0
0 drwxr-xr-x 1 Administrator None 0 Aug 21 17:54 bash
0 drwxr-xr-x 1 Administrator None 0 Jul 11 09:11 python
python :
>>> subprocess.call(["ls","-ls","~rbarakx"],shell=True)
RCS mecha.py print_unicode.py req.py requests_results.html selen.py
0
看起来 subprocess.call 只是在执行 ls。
你能告诉我为什么吗?
我的环境:
Python:Python 2.7.3(默认,2012 年 12 月 18 日,13:50:09)[GCC 4.5.3]cygwin
cygwin: CYGWIN_NT-6.1-WOW64 ... 1.7.22(0.268/5/3) ... i686Cygwin
windows:Windows 7 旗舰版
最佳答案
在 Windows 上,shell (cmd.exe
) 不支持将 ~
扩展到用户的主目录。就此而言,也不是通配符扩展。在这一点上,Python 文档非常面向 UNIX/Linux。
“但是等等!”我听到你哭了。 “我已经安装了 cygwin
,我有 bash
!”你当然知道,但你很难指望 Python 知道这一点。你在 Windows 上,所以它将使用 Windows shell。否则,期望 shell 为 cmd.exe
的 Python 脚本会非常困惑。
关于Python 的子进程未按预期在 cygwin 上解释 "~",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20128114/
我是一名优秀的程序员,十分优秀!