如何正确传递字面字符串到Python代码并使用python -c执行
我需要一些帮助,想弄明白怎么通过python -c来执行这段python代码。我在格式化python代码时遇到了一些麻烦,想让它能在命令行中为另一个应用执行。我知道可能有其他方法可以实现我想做的事情,但我只能用cmd中的python -c来最终执行,所以请记住这一点。
我有一些python代码,比如:
import os
import shutil
myPath =r"C:\dingdongz"
for root, dirs, files in os.walk(myPath):
for file in files:
os.remove(os.path(root, file))
for dir in dirs:
shutil.rmtree(os.path.join(root,dir))
但是我想用以下方法来执行它,python -c "print 'hotdogs'"
这是我现在的代码,但它没有工作:
cmdline = "\" import os, shutil \n for root, dirs, files in os.walk("+myPath+"):\n \t for file in files: \n \t \t os.remove(os.path.join(root, file)) \n \t for dir in dirs: \n \t\t shutil.rmtree(os.path.join(root, dir))"
Windows CMD
python -c "+ cmdline +'"'
2 个回答
0
在PowerShell中使用python -c的指南
- 把整个代码部分放在
"
里面,这样可以让PowerShell识别里面的特殊字符,比如换行和制表符。 - 在代码部分使用
'
来表示引号。 - 用
`n
来表示换行。 - 用
`t
来表示制表符,这在Python中是用来缩进的。
示例:压缩JSON的一行代码
- 这个代码会把
foo.json
作为输入,并把压缩后的版本打印到控制台。
python -c "import json`nimport sys`nwith open(sys.argv[1], 'r') as f:`n`tprint(json.dumps(json.load(f), separators=(',',':')))" foo.json
- 这个例子来自于用Python压缩JSON · Jamie Tanna
5
如果你真的非常非常需要用一行代码来解决问题(这其实并不推荐,也不被支持),你可以这样做:
python -c "import os; import shutil; for root, dirs, files in os.walk('+myPath+'): for file in files: os.remove(os.path.join(root, file)); for dir in dirs: shutil.rmtree(os.path.join(root, dir))"
但其实你应该把这个做成一个脚本,放在你的Windows路径里,这样你就可以这样做:
python myfancyscript.py
这样看起来是不是好多了呢?