1

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

在 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()创建目录,并且 /entries 出现在 Ubuntu 中。但是,当我在 os.mkdir() 创建目录后运行它时 testForDir ()返回 False 并引发 OSError 异常,因为该文件夹已经存在。

因此,正式提出问题,并重复我自己:当我使用os.mkdir()创建目录时,os.path.isdir()告诉我该目录不存在。

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

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

日志包含:entrys.py(空白)、files.py、journal.py、entrys(dir)

4

2 回答 2

9

你有一个拼写错误:

'entries' != 'entires'

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

把它放在一个变量中,如果你拼错了变量名,Python 会警告你。

于 2012-08-16T14:43:07.900 回答
0

我认为整个事情可以更简单:

try:
    somfunc(dirpath)
except:
    os.mkdir(dirpath)
    somfunc(dirpath)
于 2012-08-16T14:45:52.247 回答