2017-06-16 64 views
0

我相关的代码块如下:使用os.walk查找并打印我的文件名称,但无法打开它们?路径名称问题?

path = "\\Users\\Harmless\\Documents\\untitled" 
cellorder = [] 
cellcont = [] 
for roots, dirs, files, in os.walk(path): 
    for file in natural_sort(files): 
     if "Row" in file: 
      cellorder.append(file) 
      with open(file,'r') as txt: 
       print txt.readlines 
      #print "file = %s" % file 

这将成功地列出所有我想打开(如注释掉)的文件,但是当我尝试在文件名通过它被印以同样的方式为了读取它:

IOError: [Errno 2] No such file or directory: 'Row0Col0Heat.txt' 

我该如何解决这个问题?我是否需要在每个文件名中引用整个路径名和字符串替换项?如果是这样,为什么?有没有更好的方法来引用/利用路径?

回答

1

尝试使用文件的绝对路径,你可以通过

abs_file_path = os.path.abspath(file) 

的绝对路径,因为你已经拥有了基本路径,你也可以使用:

abs_file_path = os.path.join(path, file) 

希望它可以帮助

+0

0123.path.join帮助,但我现在有一个新问题:“无标题”和我的txt文件之间还有另一层子目录。我想循环并从这些子目录中提取所有txt文件,有关如何处理这个问题的任何建议? – Harmless

+0

你应该从'roots'而不是'path'建立你的'abs_file_path',因为它保存着'os.walk'目前的当前目录。 – TWReever

+0

@TWReever你能帮我理解一下那个样子吗? – Harmless