Python 检查文件是否存在的if语句的格式

Python 检查文件是否存在的if语句的格式,python,python-2.7,Python,Python 2.7,我知道这个问题可能存在,但我只是想弄清楚我的格式。我不是最好的当它涉及到格式化这样的事情,我只是做一些猜测工作,只是导致问题 我有一个它必须保存到的自定义文件类型,.gcom和一个用函数声明的文件名。当前该函数如下所示: def cComFile(): # This will NOT write command code (Yet) I want to see if file creation works! filetype='.gcom' commands_Directory

我知道这个问题可能存在,但我只是想弄清楚我的格式。我不是最好的当它涉及到格式化这样的事情,我只是做一些猜测工作,只是导致问题

我有一个它必须保存到的自定义文件类型,
.gcom
和一个用函数声明的文件名。当前该函数如下所示:

def cComFile(): # This will NOT write command code (Yet) I want to see if file creation works!
    filetype='.gcom'
    commands_Directory = 'C:\\Genisis_AI\\Commands\\' # Unused at the moment
    file_name = command
    if os.path.isfile(("C:\\Genisis_AI\\Commands\\{}").format(file_name).join("{}").format(filetype)):
        a = raw_input(('{} already exists! Would you like to overwrite this? [Y/N]: ').format(cComFile.file_name))
        string.lower(a)
        if a == 'y':
            print(("Command: {} , has been rewritten!").format(file_name))
        elif a == 'n':
            pass
    else:
        f = open((cComFile.commands_Directory.join(cComFile.file_name.join(cComFile.filetype)),'w+'))
        f.write('command was made')
        print(('Command made" {}').format(cComFile.command))
我在第135行遇到了一个问题,这是下面的一行:

if os.path.isfile(("C:\\Genisis_AI\\Commands\\{}").format(file_name).join("{}").format(filetype)):
我收到的错误如下:

Traceback (most recent call last):
  File "testing/aaa.py", line 149, in <module>
    cComFile('test')
  File "testing/aaa.py", line 135, in cComFile
    if os.path.isfile(("C:\\Genisis_AI\\Commands\\{}").format(file_name).join("{}").format(filetype)):
KeyError: 'C'
回溯(最近一次呼叫最后一次):
文件“testing/aaa.py”,第149行,在
cComFile(“测试”)
文件“testing/aaa.py”,第135行,在cComFile中
如果os.path.isfile(((“C:\\Genisis\u AI\\Commands\\{}”).format(文件名).join(“{}”).format(文件类型)):
键错误:“C”
我知道我很可能做得不对,但我想这是一次学习经历。很可能我弄错了,这意味着这个函数其余部分的格式也不正确。谢谢你的阅读,任何帮助都会很好


(我知道这很混乱,目前我并不介意,我倾向于在工作结束后清理)

您可以通过多个
'{}'
将多个值传递给这样的函数格式

"C:\\Genisis_AI\\Commands\\{}.{}".format(file_name, filetype)

您可以将多个参数传递到
格式

if os.path.isfile("C:\\Genisis_AI\\Commands\\{}.{}".format(file_name, filetype)):
或者,如果您使用的是Python 3.6(请注意字符串前面的
f
):

或者如果您更喜欢
%
语法:

if os.path.isfile("C:\\Genisis_AI\\Commands\\%s.%s" % (file_name, filetype)):

所以基本上你不想检查文件是否存在?为什么不使用try语句而不是if呢

导入错误号
尝试:
打开(文件名,'w')作为文件:
#处理文件
除IOE错误外:
#如果返回的错误为[Errno 2]“没有这样的文件或目录”
如果e.errno==errno.enoint:
#做点别的

这将使用,使系统中的错误代码可用。这在windows上对我有效,在Linux上可能略有不同不确定

.join(“{}”)
应该完成什么?您只是想在字符串末尾追加
“{}”
?因为你不是这样做的。KeyError意味着你调用的是一个字典,而这个字典中没有键。@jwodder我用{}来格式化,因为我不喜欢用大字符串,就像我现在必须用的那样,我把我认为“可能”的东西粘在一起,还有大量连接和格式化的原因。对于带有变量等的大型字符串,该如何执行此操作??抱歉,这可能不清楚,如果需要,我会尝试重写它以使您更清楚。作为故障排除步骤,请打印
(“C:\\Genisis\u AI\\Commands\\{}”).format(文件名)。join(“{}”)
,并将其与您的期望值进行比较。发生了什么事情应该很明显。谢谢大家的帮助。两个答案都是正确的,但由于给出的方法多种多样,我选择了Angubelu的回答。我将研究本模块。我很可能会在脚本的其他工作完成后使用它,因为它看起来确实更干净了。然而,这可能不是我第一次去。
if os.path.isfile("C:\\Genisis_AI\\Commands\\%s.%s" % (file_name, filetype)):