为什么可以';我不能从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]))
谢谢大家的帮助。我没想到我会这么快得到答案。非常感谢您提供的正确使用方法的提示。“我会记在心里的,这样以后我就不会再犯同样的错误了。”阿诺德,很高兴我们能帮上忙,请把你的问题设置为已回答的,这样就可以结束了