gpt4 book ai didi

Python在目录中创建不需要的文件夹

转载 作者:行者123 更新时间:2023-11-30 23:59:40 27 4
gpt4 key购买 nike

每次我调用此方法时,Python 都会在我的目录中创建一个文件夹。该方法位于我的一个 Django 应用程序中,该应用程序需要访问服务器的本地区域。

def filepath(filename, foldername='', envar='MYAPPDIR'):

if envar is not None and envar is os.environ:
dirpath = os.environ[envar]
else:
dirpath = '~/myFolder/%s' % foldername

expanded = os.path.expanduser(dirpath)
if not os.path.isdir(expanded):
if os.path.lexists(expanded):
raise IOError(errno.EEXIST, "Path is a file, nor a dir", expanded)
os.makedirs(expanded)

return os.path.join(expanded, filename)

我想阻止它发生。

请注意:用户可以指定它是否位于默认目录中的另一个目录中。因此,默认文件夹是 myFolder,但是如果用户想要在 myFolder 中使用名为 myOtherFolder 的文件夹(因此 ~/myFolder/myOtherFolder/) 然后他们就可以了。这是我试图实现的功能,因此如果没有参数传递给方法,我会使用 folder='' (我认为这是问题所在)。

最佳答案

def filepath(filename, foldername=None, envar='MYAPPDIR'):
default = '~/myFolder'
if foldername:
default = os.path.join(default, foldername)
dirpath = os.path.expanduser(os.environ.get(envar, default))

try:
os.makedirs(dirpath)
except OSError as e:
if e.errno != errno.EEXIST:
raise
return os.path.join(dirpath, filename)

最大的改变是删除第一个 if 条件中的“is”拼写错误(您的意思是“in”吗?)。

但是,您似乎希望 envar 覆盖“~/myFolder”,而不是“~/myFolder/otherSpecifiedByUser”,给出:

def filepath(filename, foldername=None, envar='MYAPPDIR'):
dirpath = os.path.expanduser(os.environ.get(envar, "~/myFolder"))
if foldername:
dirpath = os.path.join(dirpath, foldername)

try:
os.makedirs(dirpath)
except OSError as e:
if e.errno != errno.EEXIST:
raise
return os.path.join(dirpath, filename)

此外,如果您要存储配置文件,那么您可以简单地遵循XDG basedir spec ,如果您确实使用类似“~/.myFolder”的内容:

def filepath(filename, foldername=None, envar='MYAPPDIR'):
default = os.path.join(os.environ.get("XDG_CONFIG_HOME", "~/.config"), "myFolder")
dirpath = os.path.expanduser(os.environ.get(envar, default))
if foldername:
dirpath = os.path.join(dirpath, foldername)

try:
os.makedirs(dirpath)
except OSError as e:
if e.errno != errno.EEXIST:
raise
return os.path.join(dirpath, filename)

关于Python在目录中创建不需要的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com