Python os.path.join - INFO - ' list'对象没有属性'以错误结束

时间:2016-06-07 13:22:44

标签: python

我正在尝试创建一个将listdir列入列表的函数,然后迭代列表并删除最后3个元素。我之前使用过这段代码但是我遇到了一个奇怪的错误,请参阅下面的日志。我研究了我用AttributeError捕获的错误,我的结果是null。任何人都可以对我可能会忽略的内容有所了解吗?如果您需要更多信息,请与我们联系。谢谢。

[root@dbadmin bin]# python --version
Python 2.6.6

[root@dbadmin bin]# uname -a
Linux dbadmin 2.6.32-504.8.1.el6.x86_64 #1 SMP Wed Jan 28 21:11:36 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

FUNCTION:
def clean_up():
dir_list = os.listdir('/root/repo_creation/repos')
srtd_lst = sorted(dir_list)
dirs_to_remove  = srtd_lst[:-3]
for dirs in dirs_to_remove:
    try:
        logger.info("Removing dir: %s" % dirs)
        print os.path.join(dir_list, dirs)
    except AttributeError as e:
        logger.info(e)

[root@dbadmin bin]# ls -l /root/repo_creation/repos/
total 24
drwxr-xr-x 2 root root 4096 Jun  4 23:50 2016-03
drwxr-xr-x 2 root root 4096 Jun  4 23:50 2016-04
drwxr-xr-x 2 root root 4096 Jun  4 23:50 2016-05
drwxr-xr-x 2 root root 4096 Jun  4 23:50 2016-06
drwxr-xr-x 2 root root 4096 Jun  4 23:50 2016-07
drwxr-xr-x 2 root root 4096 Jun  4 23:50 2016-08

LOG_OUTPUT:
[root@dbadmin bin]# python repo_creator.py
[root@dbadmin bin]# cat ../log/std_out.2016-06-07.log
2016-06-07 09:12:12,152 - __main__ - INFO - Removing dir: 2016-03
2016-06-07 09:12:12,152 - __main__ - INFO - 'list' object has no attribute 'endswith'
2016-06-07 09:12:12,152 - __main__ - INFO - Removing dir: 2016-04
2016-06-07 09:12:12,152 - __main__ - INFO - 'list' object has no attribute 'endswith'
2016-06-07 09:12:12,152 - __main__ - INFO - Removing dir: 2016-05
2016-06-07 09:12:12,153 - __main__ - INFO - 'list' object has no attribute 'endswith'

1 个答案:

答案 0 :(得分:1)

print os.path.join(dir_list, dirs)

dir_list是一个列表,但os.path.join的参数必须是单独的字符串。

我不清楚你在这里尝试做什么。如果您只想显示dirs,则根本不需要join。只需单独打印即可。

print dirs

修改:如果您希望dirslistdir中使用的相对路径作为前缀,请将其与listdir的结果联系起来。

root_directory = '/root/repo_creation/repos'
dir_list = os.listdir(root_directory)

#... Later in the code...

print os.path.join(root_directory, dirs)