2012-06-27 53 views
6

如果您以python -c启动脚本,有没有办法在while中循环?这似乎并不可能与平台或Python版本...python -c and` while`

Linux的

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

的Windows

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声明删除括号,但似乎没有让这个运行。

回答

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

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

但是这可能是因为它只能下 - 我不知道......

+2

upvoted使用子进程而不是os。系统 –

+1

'os.system()'显然不是规范的,但我发现在[so]上更短的问题更好。 'os'比'subprocess'短 –

+0

如果它只是一个例子,'print 1234'(或'print(1234)')就足够了。但这不是这一切的主要... – glglgl

4

多行语句可能不会在Python中的语句分开;后开始 - 否则,可能会存在对代码块的歧义。只需使用换行符而不是;。这对Linux的“作品”:

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

不知道如何在Windows中输入这一点,但为什么不干脆写命令到.py文件,如果是多行?

+0

@MikePennington:如果它是一次性使用,为什么不启动解释器并在那里输入命令? –

+0

shell重定向和管道,如果我犯了一个错误''bash'向上箭头编辑稍微容易一些...我仍然迷恋perl使用多年的'perl -e'语法 –

2

不知道有窗户,如果你想要的是能够在输入的俏皮话,你可以考虑换行内引用:

% python -c "import os; 
while (True): 
    os.system('ls')" 
1

如果你真的必须这样做,在Windows中,你可以使用EXEC:

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

(我取代dir所以它适用于我的Windows系统)