2012-03-09 125 views
2

我想寻找一个文件名的扩展和延伸只能是3个字符长。如何查找文件名的特定部分/扩展名?

它是一样的东西,

filename = str(input("Please enter filename: ")) 

然后我要执行任务,寻找扩展,如果扩展不符合要求(即3个字符长),我会添加打印“无效的扩展名!”否则,请打印“有效的扩展名”。

+1

你怎么能检查扩展是否有效,如果文件名是'一.... T#t',你不能告诉我们,如果延长有效期只有通过检查扩展 – avasal 2012-03-09 11:33:23

+0

的3个字符长度为什么在这个意义上你需要文件名的扩展名是“有效的”? – 2012-03-09 11:39:19

+0

我也很好奇这个扩展检查 - @Daria,这是一个特定的应用程序,需要特定的延伸长度,或者你假设所有文件都应该有一个扩展,它应该是一个特定的大小? – 2012-03-10 04:22:37

回答

0

这应该是你所描述的:

filename = raw_input("Please enter filename: ") #This is already a string 
if len(filename.split('.')[-1])==3: 
    print "Valid extension" 
else: 
    print "Invalid extension!" 

希望这有助于。

+0

对于'/path/my.file.ext',这将返回'文件'。使用index [-1]获取最后一部分会更加正确,但如果没有扩展名(例如,使用'/ path/myfile'将得到'/ path/myfile',或者使用'/ path/myfile' '/ os'会给你'/ os',它的长度为3,并且看起来有效。 – 2012-03-10 04:17:45

+0

你说得很对,我没有考虑没有点或多点的输入,谢谢指出。 – dtrujillo 2012-03-10 13:20:17

+0

我用这种方式,结果证明它的工作原理!感谢你们的帮助x – DarsAE 2012-03-20 23:00:39

0

可以“砍”它就像如果扩展总是3个caracters:

$ python2 
Python 2.7.2 (default, Jan 31 2012, 13:19:49) 
[GCC 4.6.2 20120120 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> x = "file.ext" 
>>> print x[-3:] 
ext 

Extracting extension from filename in Python

编辑:你可以依靠的MIME类型,而不是取决于你的需求,请参阅How to find the mime type of a file in python?

+1

这是一个不错的选择,但是如果文件是“file.conf”呢?它会返回'onf',这将是3个字符长的太 – 2012-03-09 11:26:47

+0

是的,这就是为什么我点你到另一个链接。迭戈·纳瓦罗的片断可以用来测试你的extention长太;) – 2012-03-09 11:30:38

+0

这不符合问题在所有帮助,因为有一个提示,扩展名必须是通过视觉观察编程检查。另外,即使根本没有扩展名,也可以返回3个字符。 – 2012-03-10 04:14:52

7
len(os.path.splitext('/foo/file.png')[1]) - 1 == 3 
+0

作为avasal的评论暗示,一旦你有你可能也想扩展要检查其他的东西吧,比如它是否包含您不想要的字符。 – 2012-03-10 04:20:27

+1

用于使用标准库而不是自己(不可避免地不完整)版本的'os.path.splitext()'。 – 2012-03-27 06:09:45

相关问题