Linux 文件名合法性检测
Linux 文件名合法性一般规则:
- 文件名长度不超过255
- 避免使用加号、减号或者"."作为普通文件的第一个字符
- 文件名避免使用下列特殊字符,包括制表符和退格符
Python 示例如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def check(filename):
"""
Linux 文件名合法性检测
"""
# 文件名长度不能超过255
if len(filename) > 255:
print 'file name invalid'
return
# 避免使用加号、减号或者"."作为普通文件的第一个字符
black_list = ['+', '-', '.']
if filename[0] in black_list:
print 'file name invalid'
return
# 文件名避免使用下列特殊字符,包括制表符和退格符
black_list = ['/', '\t', '\b', '@', '#', '$', '%', '^', '&', '*', '(', ')', '[', ']']
intersection = set(black_list) & set(filename)
if len(intersection) != 0:
print 'file name invalid'
return
print 'file name valid'
if __name__ == '__main__':
check("test.txt")
直接使用正则表达式:
import re
fileName = "a.txt"
p = "^[^+-./\t\b@#$%*()\[\]][^/\t\b@#$%*()\[\]]{1,254}$"
if not re.match(p, fileName):
print 'file name invalid'