我正在尝试获取一个字符串列表,其中包含文件路径和文件名。目前,我只将文件名放入列表中。
代码:
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']发布于 2017-11-02 01:01:52
由于您可以访问目录路径,所以可以这样做:
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将加入您的目录路径,其中包含文件名。
发布于 2017-11-02 01:16:54
如果使用Python3.5或更高版本,则跳过os.listdir 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模块(它在早期的scandir上提供了相同的API )。
还请注意:我为路径使用了一个原始字符串;虽然\h碰巧没有它,但是对于Windows文本,您应该始终使用原始字符串,否则当您尝试使用"train_data\foo" (其中\f是ASCII表单提要字符)时,您会感到非常震惊,而r"train_data\foo"工作得很好(因为r前缀可以防止除引号字符之外的任何东西的反斜杠插值)。
https://stackoverflow.com/questions/47065932
复制相似问题