我在Python中编写了一个函数,它必须从特定文件夹和所有子文件夹返回文件。文件名取自函数参数:
def ReturnFile(fileName)
return open("C:\\folder\\" + fileName,"r")
但是fileName
可以传递例如:"..\\Windows\\passwords.txt
“或点的一些unicode符号。
如何解决?有些RegExp可能吗?
答案 0 :(得分:4)
os.path.normpath
函数规范化给定路径py解析诸如“..”之类的事情。然后,您可以检查生成的路径是否在预期的目录中:
def ReturnFile(fileName)
norm = os.path.abspath("C:\\folder\\" + fileName)
if not norm.startswith("C:\\folder\\"):
raise Exception("Invalid filename specified")
return open(norm,"r")
答案 1 :(得分:1)
这个怎么样:
import os
_BASE_PATH= "C:\\folder\\"
def return_file(file_name):
"Return File Object from Base Path named `file_name`"
os.path.normpath(file_name).split(os.path.sep)[-1]
return(open(_BASE_PATH+file_name))