2017-06-16 82 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