os.walk中"root"变量返回的完整路径名
我正在使用os.walk这个工具来遍历一个文件夹树,检查一些输入文件,然后如果找到了合适的输入,就运行一个程序。我发现我遇到了一些问题,因为在循环中,os.walk对根目录变量的处理方式让我感到困惑:
for root, dirs, files in os.walk('.'):# I use '.' because I want the walk to
# start where I run the script. And it
# will/can change
if "input.file" in files:
infile = os.path.join(root,"input.file")
subprocess.check_output("myprog input.file", Shell=True)
# if an input file is found, store the path to it
# and run the program
这个问题让我很头疼,因为输入文件的字符串看起来是这样的:
./path/to/input.file
而程序需要它看起来像这样,才能找到文件:
/home/start/of/walk/path/to/input.file
我想知道有没有更好的方法,或者说用os.walk的不同方式,这样我可以随意选择起始目录,但仍然能够使用它找到的任何文件的完整路径。谢谢!
我使用的程序是我自己用C++写的,我想我也可以修改它。不过在这个问题中,我并不是在询问如何修改,只是想澄清一下,这个问题是关于Python的os.walk和相关主题的,所以这里没有我的C++代码示例。
1 个回答
2
与其使用.
,不如通过os.path.abspath(".")
把它转换成绝对路径。这样在你开始之前,就可以把你当前的路径变成一个绝对路径。