python处理目录中包含空格的文件名

时间:2016-04-06 11:48:44

标签: python tail

我有一个文件目录,其名称中有空格,我有一个python脚本加载这些文件并对它们运行tail -n1命令,但由于名称中有空格,因此失败。例如。

我有一个带有以下文件的目录

data from_10_13_2014 09_00_45.json

我的脚本包含以下行line = os.popen("tail -n1 %s" % files).read()

截至目前,我收到以下错误

tail: cannot open ‘/home/dataserver/Development/Test/data’ for reading: No such file or directory
tail: cannot open ‘from_10_13_2014’ for reading: No such file or directory
tail: cannot open ‘09_00_45.json’ for reading: No such file or directory

我现在的解决方法是用_替换空格有没有办法在不重命名文件的情况下做到这一点?

3 个答案:

答案 0 :(得分:2)

尝试使用"tail -n1 %r",它将使用字符串的字符串表示形式,即tail -n1 "data from_10_13_2014 09_00_45.json"

甚至更好,切换到使用subprocess模块。在这里,您可以使用subprocess.check_output函数自动转义参数:

tail_line = subprocess.check_output(["tail", "-n1", files])

我建议你不要在文件名中使用空格,最终它最终会破坏脚本。也许您可以编写第二个脚本来规范化您的文件名?

答案 1 :(得分:0)

替换为\中的 files。所以反斜杠+空格。

答案 2 :(得分:0)

问题在于您依赖于popen来为您解析命令行,当然,它使用空格来进行一些解析。一个更好的解决方案是建立一个单独的参数列表,这样就不会发生命令行解析。

最简单的方法是使用subprocess.check_output

line = subprocess.check_output(["tail", "-n1", "/tmp/junk.py"])