python - 无法使用python在列中打印目录列表
问题描述
我正在工作的脚本将在列中使用 scandir 打印目录。我能够成功地扫描目录并查看文件,但都在一行中。我试图达到的最终结果是通过添加两个加法循环在列中打印。
任何能引导我朝着正确方向前进的帮助都将不胜感激。
import os
import re
path = "//xdrive/workdir/"
dirs = os.scandir(path)
dlis=[]
for file in dirs:
dlis.append(file)
for row in dlis:
for item in row:
print(item)
print("")
如果我不添加 for 循环并添加以下打印语句,这就是我得到的。
打印(dlis)
`[<DirEntry 'web_2019-02-06.tar.gz'>, <DirEntry 'web_2019-02-07.tar.gz'>, <DirEntry 'web_2019-02-09.tar.gz'>,<DirEntry 'web_2019-02-10.tar.gz'>, <DirEntry 'web_2019-02-10.tar.gz'>]
` 这是我努力得到的最终结果。
web_2019-02-06.tar.gz
web_2019-02-07.tar.gz
web_2019-02-09.tar.gz
web_2019-02-10.tar.gz
web_2019-02-10.tar.gz
这是我得到的错误。
File "Backup_list.py", line 13, in <module>
for item in row:
TypeError: 'nt.DirEntry' object is not iterable
解决方案
该os.scandir
方法返回os.DirEntry
对象而不是文件名。您应该使用name
对象的属性,或者使用该os.listdir
方法,因为您不需要文件的其他属性。此外,不需要嵌套for
循环,因为您可以简单地遍历文件名并将每个文件名打印在单独的行上:
for file in os.scandir(path):
print(file.name)
或者:
for filename in os.listdir(path):
print(filename)
推荐阅读
- mysql - 在nodejs,mysql中为上传的图像添加标题并做出反应
- arrays - 如何在反应中使用复选框过滤我的api?
- google-cloud-platform - 如何在 GCP 中将自定义到期设置为服务到服务身份验证令牌
- python-3.x - 为什么在 manim 中使用曲线下面积会给我一个错误?
- html - 如何使用css在svg中添加从下到上流动的颜色
- node.js - React native 或 expo - 即使应用程序已死或尚未打开,您是否知道一种推送通知的方法?
- python-3.x - 根据另一个列表对列表中的项目进行分类
- swift - 将字典传递给视图并串联显示视图将不会呈现
- java - 我的工作完成后我得到了一个 java 框架我只想传递其他框架但是当我尝试在 frame1 中打开它时它只是打开默认框架
- python - Pymongo Insert_Many Ordered False - 不返回插入的 id