首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文件路径+文件名输入列表?

如何将文件路径+文件名输入列表?
EN

Stack Overflow用户
提问于 2017-11-02 00:56:44
回答 2查看 3.6K关注 0票数 8

我正在尝试获取一个字符串列表,其中包含文件路径和文件名。目前,我只将文件名放入列表中。

代码:

代码语言:javascript
复制
hamFileNames = os.listdir("train_data\ham")

输出:

代码语言:javascript
复制
['0002.1999-12-13.farmer.ham.txt', 
 '0003.1999-12-14.farmer.ham.txt', 
 '0005.1999-12-14.farmer.ham.txt']

我想要一个类似于此的输出:

代码语言:javascript
复制
['train_data\ham\0002.1999-12-13.farmer.ham.txt',
 'train_data\ham\0003.1999-12-14.farmer.ham.txt',
 'train_data\ham\0005.1999-12-14.farmer.ham.txt']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-02 01:01:52

由于您可以访问目录路径,所以可以这样做:

代码语言:javascript
复制
dir = "train_data\ham"
output = map(lambda p: os.path.join(dir, p), os.listdir(dir))

或者更简单

代码语言:javascript
复制
output = [os.path.join(dir, p) for p in os.listdir(dir)]

其中,os.path.join将加入您的目录路径,其中包含文件名。

票数 1
EN

Stack Overflow用户

发布于 2017-11-02 01:16:54

如果使用Python3.5或更高版本,则跳过os.listdir os.scandir,它既高效又能为您工作(path是结果对象的属性):

代码语言:javascript
复制
hamFileNames = [entry.path for entry in os.scandir(r"train_data\ham")]

这还允许您使用廉价的过滤器(scandir包括一些免费的文件信息,而没有stat-ing文件),例如只保留文件(没有目录或特殊的文件系统对象):

代码语言:javascript
复制
hamFileNames = [entry.path for entry in os.scandir(r"train_data\ham") if entry.is_file()]

如果您在3.4或更低版本上,您可能需要查看PyPI scandir模块(它在早期的scandir上提供了相同的API )。

还请注意:我为路径使用了一个原始字符串;虽然\h碰巧没有它,但是对于Windows文本,您应该始终使用原始字符串,否则当您尝试使用"train_data\foo" (其中\f是ASCII表单提要字符)时,您会感到非常震惊,而r"train_data\foo"工作得很好(因为r前缀可以防止除引号字符之外的任何东西的反斜杠插值)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47065932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档