列出目录时文件名中的Python转义空格字符

时间:2018-04-13 02:09:22

标签: bash python-3.x shell

注意:我是python的新手。

我使用python3.5和以下代码以递归方式对目录文件执行操作。这是一个简化版本,显示了我遇到的问题:

import os

rootdir="/home/some_path"

for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        print(subdir + '/' + file)

示例输出如下是错误的,因为它不会转义空格字符并导致找不到文件:

/home/spaces file3
/home/spaces file1
/home/.file1
/home/spaces file2
/home/-file3

理想情况下,我想要的是:

/home/spaces\ file3

以便我创建的路径正确并且文件已成功找到。我该怎么做?什么是最简单的方式?

请注意,我真正想要的是不在屏幕上打印,而是以下列方式运行像du这样的bash函数:

import subcall
import os

rootdir="/home/some_path"

for subdir, dirs, files in os.walk(rootdir):
    for file in files:
        sp.call("du -B1 " + subdir + '/' + file, shell=True)

1 个答案:

答案 0 :(得分:1)

看起来你想要的是Python打印字符串,你可以在shell程序中使用它来可靠地循环路径。由于* nix中的路径可以包含除NUL(string.xml)之外的每个字节,因此通常接受的解决方案是使用NUL作为文件名终结符:

\0

然后,您可以将结果与可以读取NUL终止项的命令一起使用,例如大多数GNU工具。

相关问题