在Python中分割文件路径字符串时出现错误
问题描述:
这就是我正在做的事情。我正在从一个文件夹中获取文本,修改该文本,然后使用修改后的文件名将其写入另一个文件夹。我试图建立文件名作为变量。不幸的是这种情况:在Python中分割文件路径字符串时出现错误
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)
输出:测试\ indillama_Luisa_testfile
的文件名是“indillama_Luisa_testfile.txt”它被保存称为“测试”我的桌面上的一个文件夹中。
Python在文件名中包含'test \'。如果我尝试在[6]处分割名称,则表示索引超出范围。我正在使用正则表达式,我假设它读取'/ *'作为一个单元,而不是文件目录中的斜线。
如何获取文件名?
答
您可以通过OS路径分隔符分割:
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)
答
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()
回传一个包含路径和分离扩展的元组。既然这就是你的例子似乎正在打印的东西,那就是我在我的建议答案中所做的。
对于可移植性,使用内置路径操作例程通常更安全,而不是试图自己做。
答
您可以使用os.listdir(path)
列出目录中的所有文件。 然后迭代列表以获取每个文件的文件名。
for file in os.listdir(path):
name2 = file .split(".")[0]
print(name2)
这工作,谢谢!但我不确定它是如何工作的。 os.path.sep如何分割字符串?为什么列表位置为-1? – Wangana
@AlexR。 os.path.sep是当前操作系统用于分隔文件路径的字符串。 [-1]的意思是“列表中的最后一个元素”,在这种情况下是文件名。 – Natsukane