注意:我是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)
答案 0 :(得分:1)
看起来你想要的是Python打印字符串,你可以在shell程序中使用它来可靠地循环路径。由于* nix中的路径可以包含除NUL(string.xml
)之外的每个字节,因此通常接受的解决方案是使用NUL作为文件名终结符:
\0
然后,您可以将结果与可以读取NUL终止项的命令一起使用,例如大多数GNU工具。