Python os当我使用os.mkdir创建目录时,os.path.isdir告诉我该目录不存在

2024-04-30 01:40:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个相当简单的日记条目程序,我需要检查一个目录是否存在,如果不存在,我需要创建一个。

在journal.py中,我正在导入另一个模块:文件。此模块处理文件和目录的创建和删除

日记帐.py

if __name__ == '__main__':
    if files.testForDir('entries') == False:
        print 'Directory "entries" does not exist'
        print 'Attempting to create directory'
        files.createDir('entires')

文件.py

def testForDir(dirname, path=os.getcwd()):
    pathtotest = os.path.join(path, dirname)
    return os.path.isdir(pathtotest)

def createDir(dirname, path=os.getcwd()):
    dirpath = os.path.join(path, dirname)
    try:
        os.mkdir(dirpath)
    except OSError as error:
        print error

我的问题是:当我在Ubuntu中创建目录时,testForDir()返回正确的结果。当我在没有/entries的情况下运行程序时,它也会正确运行。它使用os.mkdir()创建目录,并在Ubuntu中显示/entries。但是,当我在os.mkdir()创建目录后运行它时,testForDir()返回False,并且由于文件夹已经存在,将引发一个OSError异常。

所以要正式地提出这个问题,重复一下:当我使用os.mkdir()创建一个目录时,os.path.isdir()告诉我这个目录不存在。

系统信息:Ubuntu 12.04 LTS 32位,Python 2.7。

文件结构:home/name/Programs/journal/。

日记包含:entries.py(空白)、files.py、Journal.py、entries(目录)


Tags: 文件pathpy程序目录osubuntufiles
2条回答

你有拼写错误:

'entries' != 'entires'

停止在多个地方硬编码同一个字符串(拼写错误是一种风险,但以后更改也不必要地痛苦)。

将其放入变量中,如果您拼写错误,Python将能够发出警告。

我觉得整个事情可以简单一点:

try:
    somfunc(dirpath)
except:
    os.mkdir(dirpath)
    somfunc(dirpath)

相关问题 更多 >