仅从特定文件夹返回文件

时间:2009-07-24 09:34:44

标签: python

我在Python中编写了一个函数,它必须从特定文件夹和所有子文件夹返回文件。文件名取自函数参数:

def ReturnFile(fileName)
  return open("C:\\folder\\" + fileName,"r")

但是fileName可以传递例如:"..\\Windows\\passwords.txt“或点的一些unicode符号。

如何解决?有些RegExp可能吗?

2 个答案:

答案 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))