python中的strncmp

python中的strncmp,python,Python,我正在解析一个包含路径列表的文件。我正在尝试查看一条路径是否位于特定目录下。所以我有两个字符串:S1='/tmp/'和S2='/tmp/file.txt' 如果我想检查S2是否包含S1加上一些额外的字节,在C中,我会对S1和S2执行strlen(S1)字节的strncmp。在Python中有这样做的方法吗?我是Python新手,还不知道所有可用的模块。我可以通过迭代字符串中的字符并进行比较来实现这一点,但我想知道是否有任何东西在默认情况下为我提供了此类帮助函数。您可以执行:如果b:中的a将检查a

我正在解析一个包含路径列表的文件。我正在尝试查看一条路径是否位于特定目录下。所以我有两个字符串:
S1='/tmp/'
S2='/tmp/file.txt'


如果我想检查
S2
是否包含
S1
加上一些额外的字节,在C中,我会对
S1
S2
执行
strlen(S1)
字节的
strncmp
。在Python中有这样做的方法吗?我是Python新手,还不知道所有可用的模块。我可以通过迭代字符串中的字符并进行比较来实现这一点,但我想知道是否有任何东西在默认情况下为我提供了此类帮助函数。您可以执行:
如果b:
中的a将检查
a
是否是
b
中任何位置的子字符串

e、 g

在您的帖子中,您似乎只想查看字符串的开头。在这种情况下,您可以使用
.startswith
方法:

if 'foobar'.startswith('foo'):
    print "it does!"
同样,您也可以使用
endswith
执行相同的操作:

if 'foobar'.endswith('bar'):
    print "Yes sir :)"
最后,
strncmp
的最直译可能是使用切片和
=

if a[:n] == b[:n]:
    print 'strncmp success!'

Python还有许多用于处理模块中路径名的工具。值得调查里面有什么。有一些非常简洁的函数。

您可能正在寻找
os.path.commonprefix

例如:
os.path.commonprefix(['/tmp/','/tmp/file.txt'])
将返回
'/tmp/

因此,您应该检查
len(os.path.commonprefix([s1,s2])>0


在此处查看文档:

您可以使用字符串的
查找方法

>>> s1 = "/tmp"
>>> s2 = "/tmp/file.txt"
>>> s2.find(s1)
0
你可以通过

S2[:len(S1)] == S1
或者更简单:

S2.startswith(S1)

你的可能更像蟒蛇,但我认为切片也应该考虑+哇。这正是我希望python拥有的东西。有人告诉我python非常棒,到目前为止还没有让我失望。@R11——python有一些QWIRK,在一开始几乎让所有人都感到困惑,但一旦你弄明白了这些,与之合作真的是一种乐趣。祝你好运与strcmp()相比,所有这些例子都是无用的。这是一个有趣的问题+1.跳出框框思考。太好了!我也很喜欢这个。它是否也处理特定于操作系统的符号,例如以“C:\\tmp\”而不是“/tmp/”开头的windows路径?我在发布的时候根本没有这个。我只是希望能找到一些弦乐技巧。但是太棒了!老实说,我不确定它是如何与windows一起工作的,我也没有windows框来检查自己,但我想没有。这似乎是一种更准确的方法来检查路径是否是子路径。我刚刚注意到您正在执行路径操作,而C可能没有专门的模块,因为python有
os.path
。许多程序员从其他背景来到python并重新设计了这些函数(通常以不可移植的方式),所以我觉得展示标准库是个好主意。请记住,python附带电池,包括:D@rgrinberg-这正是我想用python避免的。我不想花时间编写助手函数,而是想花时间研究实际的问题逻辑。谢谢你的帮助。
S2.startswith(S1)