Python 仅从特定文件夹返回文件

Python 仅从特定文件夹返回文件,python,Python,我用Python编写了一个函数,该函数必须返回特定文件夹和所有子文件夹中的文件。文件名取自函数参数: def ReturnFile(fileName) return open("C:\\folder\\" + fileName,"r") 但作为fileName您可以传递例如:“.\\Windows\\passwords.txt”或一些用于点的unicode符号 如何修复它?某些RegExp可能?该函数规范化给定路径,例如“.”。然后,您可以检查结果路径是否在预期目录中: def Retur

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

def ReturnFile(fileName)
  return open("C:\\folder\\" + fileName,"r")
但作为
fileName
您可以传递例如:
“.\\Windows\\passwords.txt
”或一些用于点的unicode符号

如何修复它?某些RegExp可能?

该函数规范化给定路径,例如“.”。然后,您可以检查结果路径是否在预期目录中:

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")
该函数规范化给定的路径,例如“.”。然后,您可以检查结果路径是否在预期目录中:

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")
这个怎么样:

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))
这个怎么样:

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

你想做什么?检查指定为文件名的字符串是否为有效文件名?我希望该程序只能返回一个文件夹(和子文件夹)中的文件,并且是舒尔,没有人可以将参数设置为ex.“.”并读取服务器上的所有文件。请参阅:,您想做什么?检查以文件名形式给出的字符串是否为有效文件名?我希望该程序只能从一个文件夹(和子文件夹)返回文件,并且是舒尔,没有人可以使用ex.“.”参数,并读取服务器上的所有文件。请参阅:,在windows上:
>>>r'../../AUTOEXEC.BAT'.split(os.path.sep)[-1]
结果为:
“../../AUTOEXEC.BAT”
。是的,使用原始文本拆分时可能无法按预期工作。我已经更新了我的答案,谢谢。在windows上:
>>r'../../../AUTOEXEC.BAT'.split(os.path.sep)[-1]
会导致:
'../../AUTOEXEC.BAT'
。是的,使用原始文本拆分可能无法按预期工作。我已经更新了我的答案,谢谢。