python 处理目录中带有空格的文件名
python handle filenames with whitespace in a directory
我有一个包含名称中有空格的文件的目录,我有一个 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
我现在的解决方法是用 _
替换空格,有什么办法可以不重命名文件吗?
将 </code> 替换为 <code>\
</code> <code>files
。所以一个反斜杠 + space.
试试"tail -n1 %r"
,它将使用字符串的字符串表示,即tail -n1 "data from_10_13_2014 09_00_45.json"
。
或者更好的是,切换到使用自动转义参数的 subprocess module. Here you can for example use the subprocess.check_output
函数:
tail_line = subprocess.check_output(["tail", "-n1", files])
我建议您完全不要在文件名中使用白色 space,它最终总是会破坏脚本。也许您可以编写第二个脚本来规范化您的文件名?
问题是您依赖 popen
来为您解析命令行,当然,它使用空格来进行一些解析。更好的解决方案是建立一个单独的参数列表,这样就不必进行命令行解析。
最简单的方法是使用 subprocess.check_output:
line = subprocess.check_output(["tail", "-n1", "/tmp/junk.py"])
我有一个包含名称中有空格的文件的目录,我有一个 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
我现在的解决方法是用 _
替换空格,有什么办法可以不重命名文件吗?
将 </code> 替换为 <code>\
</code> <code>files
。所以一个反斜杠 + space.
试试"tail -n1 %r"
,它将使用字符串的字符串表示,即tail -n1 "data from_10_13_2014 09_00_45.json"
。
或者更好的是,切换到使用自动转义参数的 subprocess module. Here you can for example use the subprocess.check_output
函数:
tail_line = subprocess.check_output(["tail", "-n1", files])
我建议您完全不要在文件名中使用白色 space,它最终总是会破坏脚本。也许您可以编写第二个脚本来规范化您的文件名?
问题是您依赖 popen
来为您解析命令行,当然,它使用空格来进行一些解析。更好的解决方案是建立一个单独的参数列表,这样就不必进行命令行解析。
最简单的方法是使用 subprocess.check_output:
line = subprocess.check_output(["tail", "-n1", "/tmp/junk.py"])