如何正确传递字面字符串到Python代码并使用python -c执行

1 投票
2 回答
4336 浏览
提问于 2025-04-16 12:06

我需要一些帮助,想弄明白怎么通过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
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

这样看起来是不是好多了呢?

撰写回答