2016-04-20 132 views
0

我是一個Python新手,需要創建一個腳本來解析某些文件並將它們放入SQL數據庫中。所以我試圖創建更小的腳本來完成我想要的功能,然後將它們組合成更大的腳本。這段代碼爲什麼不打印目錄內容?

爲此,我試圖運行此代碼:

import os 

fileList = [] 

testDir = "/home/me/somedir/dir1/test" 

for i in os.listdir(testDir): 
    if os.path.isfile(i): 
     fileList.append(i) 

for fileName in fileList: 
    print(fileName) 

當我看到在輸出端,我沒有看到列出的任何文件。我嘗試了沒有引號的路徑,並得到堆棧錯誤。所以搜索顯示我需要雙引號。

我哪裏錯了?

回答

0

那是因爲你是最有可能從一個文件夾ejecuting腳本您testdir外,os.path.isfile需要的文件的完整路徑名稱,以便它可以檢查是是LILE與否(os.listdir返回的名字),如果沒有提供完整的路徑,那麼它會檢查是否有一個文件與給定的名稱在腳本執行的同一文件夾中,要解決此問題,您需要提供該文件的完整路徑名,您可以使用os.path.join這樣

for name in os.listdir(testDir): 
    if os.path.isfile(os.path.join(testDir,name)): 
     fileList.append(name)  

,或者如果你也想的完整路徑

for name in os.listdir(testDir): 
    path = os.path.join(testDir,name) 
    if os.path.isfile(path): 
     fileList.append(path) 
0

我發現這個代碼工作正常:

import os 

in_path = "/home/me/dir/" 

for dir_path, subdir_list, file_list in os.walk(in_path): 
    for fname in file_list: 
     full_path = os.path.join(dir_path, fname) 
     print(full_path) 

我可以用full_path做我的下一個步驟。

如果有人有任何性能提示,請隨時分享。或者指出我正確的方向。