Python 仅从特定文件夹返回文件
我用Python编写了一个函数,该函数必须返回特定文件夹和所有子文件夹中的文件。文件名取自函数参数:Python 仅从特定文件夹返回文件,python,Python,我用Python编写了一个函数,该函数必须返回特定文件夹和所有子文件夹中的文件。文件名取自函数参数: def ReturnFile(fileName) return open("C:\\folder\\" + fileName,"r") 但作为fileName您可以传递例如:“.\\Windows\\passwords.txt”或一些用于点的unicode符号 如何修复它?某些RegExp可能?该函数规范化给定路径,例如“.”。然后,您可以检查结果路径是否在预期目录中: def Retur
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'
。是的,使用原始文本拆分可能无法按预期工作。我已经更新了我的答案,谢谢。