如何使用filename.find()?

-4 投票
1 回答
764 浏览
提问于 2025-04-18 11:55

我刚开始学习Python,正在试着理解一个脚本,其中有以下几行:

dotInd = fileName.find(".")
if dotInd <> -1:
    newFC = fileName[0:dotInd]
    outFC = newFC + "_buffer"
else:
    outFC = fileName + "_buffer"  

我还没搞明白fileName.find(".")在干什么,以及条件dotInd<>-1是什么意思。

(对这个<>的东西感到困惑)

任何帮助都很感谢,还有,哪里可以找到Python所有函数的作用列表吗?谢谢!

1 个回答

5

fileName 是一个标识符,指的是一个字符串类型的对象。你需要找的是 str.find() 这个方法。这个方法会返回 -1,如果你要找的文本没有找到;如果找到了,它会返回文本的位置。

<> 是一种古老且不推荐使用的写法,实际上是 != 的意思,它用来检查 '.' 是否被找到;如果找到了,就会用返回的位置来切割字符串,去掉从 '.' 开始到字符串末尾的部分。

这段代码可以更好地写成:

outFC = fileName.partition('.')[0] + '_buffer'

这样写的结果和使用 str.find() 以及检查输出的结果是一样的。想了解更多,可以查看 str.partition() 函数 的文档。

更正确的做法是使用 os.path.splitext() 函数,这样可以避免在一个前导的 .(在 POSIX 系统中表示隐藏文件)上进行切割:

import os.path

outFC = os.path.splitext(fileName)[0] + '_buffer'

撰写回答