为什么这段代码不能打印目录内容?

时间:2016-04-20 23:53:39

标签: python-3.x

我是一个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)

当我查看输出时,我没有看到列出的任何文件。我尝试了没有引号的路径并得到了堆栈错误。所以搜索显示我需要双引号。

我哪里出错了?

2 个答案:

答案 0 :(得分: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来完成下一步。

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

答案 1 :(得分:0)

这是因为您最有可能从testdir以外的文件夹中执行脚本,os.path.isfile需要文件的完整路径名,以便它可以检查该文件是否为lile或not(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)