为什么可以';我不能从Python中由几个串联字符串组成的变量打开一个文件吗?

为什么可以';我不能从Python中由几个串联字符串组成的变量打开一个文件吗?,python,Python,所以我写了这个代码 spec = raw_input("Enter the specimen number: ") naorimp = raw_input("Native or Implant (N/I)? ") trial = raw_input("Trial number: ") typana = raw_input("What do you want to analyze (contact area[CA]/contact pressure[CP])? ") try : if t

所以我写了这个代码

spec = raw_input("Enter the specimen number: ")
naorimp = raw_input("Native or Implant (N/I)? ")
trial = raw_input("Trial number: ")
typana = raw_input("What do you want to analyze (contact area[CA]/contact pressure[CP])? ")

try :
    if typana.lower() == "cp" :
        naorimp = naorimp.upper()
        TSfilnm = 'pressure'+spec+naorimp.upper()+trial+'.txt'
    else :
        naorimp = naorimp.upper()
        TSfilnm = 'area'+spec+naorimp+trial+'.txt'
    TSfile = open(TSfilnm, 'r')
    myofilnm = 'accelerometer'+spec+naorim.upper()+trial+'.txt'
    print myofilnm
    myofile = open(myofilnm, 'r')
except :
    print "File could not be found."
    print "Please re-run the program."
    exit()

print "OK"
我想根据用户的输入和几个参数(样本编号、原生或植入、试验编号和分析类型)打开一个文件。该文件已与python文件代码位于同一文件夹中。但当我运行程序时,我总是以except语句结束(找不到文件。请重新运行程序)。我仔细检查了
TSfilnm
变量中的真实文件名和字符串,它们是相同的。但是,
TSfile
无法执行


另外,我文件夹中的文件名是:pressure3N1.txt,area3N1.txt,accelerometer3N1.txt

您在此行的变量名中缺少一个
p

myofilnm = 'accelerometer'+spec+naorim.upper()+trial+'.txt'
应该是

myofilnm = 'accelerometer'+spec+naorimp.upper()+trial+'.txt'

另外,在开发过程中不要单独使用“except”,它只会隐藏类似于本例的错误。最好像这样做

import sys

try:
    #Your_code_here
except:
     print sys.exc_info()[1]
     #Any other code you wanna run

此行变量名中缺少一个
p

myofilnm = 'accelerometer'+spec+naorim.upper()+trial+'.txt'
应该是

myofilnm = 'accelerometer'+spec+naorimp.upper()+trial+'.txt'

在开发过程中也不要单独使用“exceptive”,它只会隐藏类似于本例中的错误。最好像这样做

import sys

try:
    #Your_code_here
except:
     print sys.exc_info()[1]
     #Any other code you wanna run

您确定消息“找不到文件。请重新运行程序”表示找不到该文件吗?事实上,这意味着您有一个异常,但您需要检查此异常的原因。此外,您还可以在打开此文件之前使用
os.path.isfile(TSfilnm)
检查此文件是否存在。这样做只是为了找出问题的原因。结果是我在某一行的变量名中漏掉了一个“p”。感谢您的回复。您确定“找不到文件。请重新运行程序”消息表示找不到该文件吗?事实上,这意味着您有一个异常,但您需要检查此异常的原因。此外,您还可以在打开此文件之前使用
os.path.isfile(TSfilnm)
检查此文件是否存在。这样做只是为了找出问题的原因。结果是我在某一行的变量名中漏掉了一个“p”。感谢您的回复。您构建代码的方式不正确。try-except块应仅位于打开文件的零件周围。否则,try块中的任何错误都会导致您认为该文件不存在,而实际上该错误是其他错误,如变量名错误。您也不应该只使用
,除了:
,因为这将捕获
键盘中断。使用
异常除外:
。是的,对于任何预期错误,理想的做法是使用
异常除外:
,但在末尾使用常规异常也很有用,以捕获任何意外错误。我最喜欢的是
,除了:subprocess.Popen(['open','http://stackoverflow.com/search?q=python+“+str(sys.exc_info()[1]))
谢谢大家的帮助。我没想到我会这么快得到答案。非常感谢您的提示正确使用尝试和除外。“我会记在心里的,这样以后我就不会再犯同样的错误了。”阿诺德,很高兴我们能帮上忙,请把你的问题设置为已回答的,这样就可以结束了。你构建代码的方式不正确。try-except块应仅位于打开文件的零件周围。否则,try块中的任何错误都会导致您认为该文件不存在,而实际上该错误是其他错误,如变量名错误。您也不应该只使用
,除了:
,因为这将捕获
键盘中断。使用
异常除外:
。是的,对于任何预期错误,理想的做法是使用
异常除外:
,但在末尾使用常规异常也很有用,以捕获任何意外错误。我最喜欢的是
,除了:subprocess.Popen(['open','http://stackoverflow.com/search?q=python+“+str(sys.exc_info()[1]))
谢谢大家的帮助。我没想到我会这么快得到答案。非常感谢您提供的正确使用方法的提示。“我会记在心里的,这样以后我就不会再犯同样的错误了。”阿诺德,很高兴我们能帮上忙,请把你的问题设置为已回答的,这样就可以结束了