如何将文件路径+文件名放入列表?
How to get file path + file name into a list?
我正在尝试获取包含文件路径和文件名的字符串列表。
目前我只将文件名放入列表中。
代码:
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[=12=]02.1999-12-13.farmer.ham.txt',
'train_data\ham[=12=]03.1999-12-14.farmer.ham.txt',
'train_data\ham[=12=]05.1999-12-14.farmer.ham.txt']
因为您可以访问目录路径,所以您可以这样做:
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
会将您的目录路径与其中的文件名连接起来。
如果您使用的是 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
前缀防止除引号字符外的任何内容的反斜杠插值)。
我正在尝试获取包含文件路径和文件名的字符串列表。 目前我只将文件名放入列表中。
代码:
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[=12=]02.1999-12-13.farmer.ham.txt',
'train_data\ham[=12=]03.1999-12-14.farmer.ham.txt',
'train_data\ham[=12=]05.1999-12-14.farmer.ham.txt']
因为您可以访问目录路径,所以您可以这样做:
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
会将您的目录路径与其中的文件名连接起来。
如果您使用的是 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
前缀防止除引号字符外的任何内容的反斜杠插值)。