在/ python中使用/拆分文件路径字符串时出错

时间:2016-06-08 21:14:12

标签: python list path

这就是我正在做的事情。我从文件夹中获取文本,修改该文本,然后将其写入具有修改过的文件名的另一个文件夹。我试图将文件名建立为变量。不幸的是,这种情况发生了:

import os
import glob
path = r'C://Users/Alexander/Desktop/test/*.txt'
for file in glob.glob(path):
    name = file.split(r'/')[5]
    name2 = name.split(".")[0]
    print(name2)

输出:test \ indillama_Luisa_testfile

文件名是' indillama_Luisa_testfile.txt'它保存在我桌面上名为' test'的文件夹中。

Python包括' test \'在文件名中。如果我尝试在[6]处拆分名称,则表示索引超出范围。我正在使用正则表达式,我假设它正在阅读' / *'作为单个单元而不是文件目录中的斜杠。

如何获取文件名?

3 个答案:

答案 0 :(得分:1)

import os
import glob
path = r'C://Users/Alexander/Desktop/test/*.txt'
for file in glob.glob(path):
    name = os.path.basename(file)
    (path, ext) = os.path.splitext(file)
    print(ext)

os.path.basename()将提取路径的文件名部分。 os.path.splitext()移回包含路径和分离扩展的元组。既然你的例子似乎是打印的,那就是我在建议的答案中所做的。

为了便于携带,使用内置的路径操作例程通常更安全,而不是自己尝试。

答案 1 :(得分:1)

您可以按操作系统路径分隔符进行拆分:

import os
import glob

path = r'C://Users/Alexander/Desktop/test/*.txt'
for file in glob.glob(path):
    name = file.split(os.path.sep)[-1]
    name2 = name.split(".")[0]
    print(name2)

答案 2 :(得分:0)

您可以使用os.listdir(path)列出目录中的所有文件。 然后迭代列表以获取每个文件的文件名。

for file in os.listdir(path):
    name2 = file .split(".")[0]
    print(name2)