如何将文件路径+文件名放入列表中? [复制]
Posted
技术标签:
【中文标题】如何将文件路径+文件名放入列表中? [复制]【英文标题】:How to get file path + file name into a list? [duplicate] 【发布时间】:2018-04-14 10:11:01 【问题描述】:我正在尝试获取包含文件路径和文件名的字符串列表。 目前我只将文件名放入列表中。
代码:
hamFileNames = os.listdir("train_data\ham")
输出:
['0002.1999-12-13.farmer.ham.txt',
'0003.1999-12-14.farmer.ham.txt',
'0005.1999-12-14.farmer.ham.txt']
我想要一个类似这样的输出:
['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']
【问题讨论】:
【参考方案1】:由于您可以访问目录路径,因此您可以这样做:
dir = "train_data\ham"
output = map(lambda p: os.path.join(dir, p), os.listdir(dir))
或更简单
output = [os.path.join(dir, p) for p in os.listdir(dir)]
os.path.join
将加入您的目录路径,其中包含文件名。
【讨论】:
另见***.com/a/11058554/8586227。【参考方案2】:如果您使用的是 Python 3.5 或更高版本,请跳过 os.listdir
in favor of os.scandir
,这既更有效又为您工作(path
是结果对象的一个属性):
hamFileNames = [entry.path for entry in os.scandir(r"train_data\ham")]
这还可以让您廉价地过滤(scandir
包含一些免费的文件信息,没有 stat
-ing 文件),例如只保留文件(没有目录或特殊的文件系统对象):
hamFileNames = [entry.path for entry in os.scandir(r"train_data\ham") if entry.is_file()]
如果您使用的是 3.4 或更低版本,您可能需要查看 PyPI scandir
模块(它提供与早期 Python 相同的 API)。
另请注意:我使用原始字符串作为路径;虽然 \h
碰巧在没有它的情况下也能工作,但您应该始终对 Windows 路径文字使用原始字符串,否则当您尝试使用 "train_data\foo"
(其中 \f
是ASCII 换页符),而 r"train_data\foo"
工作得很好(因为 r
前缀可以防止除引号字符之外的任何反斜杠插值)。
【讨论】:
以上是关于如何将文件路径+文件名放入列表中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章