8

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 ~]$

视窗

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>

我曾尝试删除while语句中的括号,但似乎没有任何效果。

4

4 回答 4

10
python -c $'import subprocess\nwhile True: subprocess.call(["ls"])'

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

但它可能只适用于 - 我不确定......

于 2012-06-27T12:37:32.357 回答
5

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

$ python -c "import os
while True: os.system('ls')"

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

于 2012-06-27T12:34:20.457 回答
2

不了解windows,如果你想要的只是能够输入单行,你可以考虑引号内的换行符:

% python -c "import os;
while (True):
  os.system('ls')"
于 2012-06-27T12:34:30.057 回答
2

如果您真的必须在 Windows 中执行此操作,您可以使用 exec:

python -c "exec \"import os;\rwhile True:\r  os.system('dir')\""

(我替换dir了它,所以它可以在我的 Windows 系统上运行)

于 2012-06-27T12:48:35.497 回答