2016-04-20 90 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做我的下一个步骤。

如果有人有任何性能提示,请随时分享。或者指出我正确的方向。