python -c和`while`

Mik*_*ton 6 python linux windows command-line

while如果你用脚本启动脚本,有没有办法循环python -c?这似乎与平台或python版本无关......

Linux的

[mpenning@Hotcoffee ~]$ python -c "import os;while (True):    os.system('ls')"
  File "<string>", line 1
    import os;while (True):    os.system('ls')
                  ^
SyntaxError: invalid syntax
[mpenning@Hotcoffee ~]$
[mpenning@Hotcoffee ~]$ python -V
Python 2.6.6
[mpenning@Hotcoffee ~]$ uname -a
Linux Hotcoffee 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux
[mpenning@Hotcoffee ~]$
Run Code Online (Sandbox Code Playgroud)

视窗

C:\Users\mike_pennington>python -c "import os;while True: os.system('dir')"
  File "<string>", line 1
    import os;while True: os.system('dir')
                  ^
SyntaxError: invalid syntax

C:\Users\mike_pennington>python -V
Python 2.7.2

C:\Users\mike_pennington>
Run Code Online (Sandbox Code Playgroud)

我试过在while语句中删除括号,但似乎没有任何东西可以使这个运行.

glg*_*lgl 8

python -c $'import subprocess\nwhile True: subprocess.call(["ls"])'
Run Code Online (Sandbox Code Playgroud)

会工作(注意$'...'\n).

但它可能只是在下工作- 我不确定......

  • upvoted使用subprocess而不是os.system (2认同)

Sve*_*ach 5

多行语句不能;在 Python 中的语句分隔之后开始——否则,代码块可能存在歧义。只需使用换行符代替;. 这在 Linux 上“有效”:

$ python -c "import os
while True: os.system('ls')"
Run Code Online (Sandbox Code Playgroud)

不确定如何在 Windows 上输入它,但.py如果命令不止一行,为什么不简单地将命令写入文件?