记录实用有价值的内容

Python 怎么处理命令字符串特殊符的问题

使用 Python 执行 shell 命令操作文件时,路径可能会带有空格、斜杠等符号,空格可能会导致命令不对,因此需要将路径进行转义。

推荐解决办法:

使用内置函数 quote,使用这个函数能够将带有空格、中文字符或者斜杠的字符串转换成可以作为 Shell 命令的一部分,且不会被分割开。

Python 2 使用 pipes.quote,在 Python 3 中,此函数已重命名为 shlex.quote,

话不多说,直接上代码:


# -*- coding: utf-8 -*-

import subprocess
import shlex

try:
    from shlex import quote  # For Python 3
except ImportError:
    from pipes import quote  # For Python 2

# 举例:将文件 a absd sdf .txt 复制为 a absd sdfcccccc.txt

aa = '/var/a absd sdf .txt'
bb = '/var/a absd sdfcccccc.txt'

cmd = 'cp -rf %s %s' % (quote(aa), quote(bb))
subprocess.call(shlex.split(cmd))


这样就能将带空格的文件名复制为一个还是带空格的文件名。

其实不只是文件名带空格,带中文都可以,文件夹带空格中文都是可以的。


上一篇:Python 将列表元素由字符串转为数字

下一篇:如何将多个 Python 脚本源码合并为一个文件