我正在尝试创建一个将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'
答案 0 :(得分:1)
print os.path.join(dir_list, dirs)
dir_list
是一个列表,但os.path.join
的参数必须是单独的字符串。
我不清楚你在这里尝试做什么。如果您只想显示dirs
,则根本不需要join
。只需单独打印即可。
print dirs
修改:如果您希望dirs
以listdir
中使用的相对路径作为前缀,请将其与listdir
的结果联系起来。
root_directory = '/root/repo_creation/repos'
dir_list = os.listdir(root_directory)
#... Later in the code...
print os.path.join(root_directory, dirs)