Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么赢了';难道这段python代码不能打开文件吗?_Python - Fatal编程技术网

为什么赢了';难道这段python代码不能打开文件吗?

为什么赢了';难道这段python代码不能打开文件吗?,python,Python,当我运行此代码时,它会提示输入文件名,并重新标记我是输入文件的路径,还是拖放,它将运行代码的“文件无法打开”的“除外”部分,但它永远不会运行fuse=open(fname)或程序的其余部分 以下是完整的程序: fname = raw_input('Enter file name: ') try: fuse = open(fname) except: print 'File cannot be opened' raw_input('Press enter to quit')

当我运行此代码时,它会提示输入文件名,并重新标记我是输入文件的路径,还是拖放,它将运行代码的“文件无法打开”的“除外”部分,但它永远不会运行
fuse=open(fname)
或程序的其余部分

以下是完整的程序:

fname = raw_input('Enter file name: ')
try:
    fuse = open(fname)
except:
    print 'File cannot be opened'
    raw_input('Press enter to quit')
count = 0
total = 0
for line in fuse:
    if line.notstartswith('X-DSPAM-Confidence:'): continue
    elif line.startswith('X-DSPAM-Confidence:'):
    count = count + 1
    vpos = line.find(' ')
    addv = line[vpos:]
    addv = float(addv)
    total = total + addv

print total/count
有什么想法可能是错误的吗

当我在不使用try和except的情况下从命令行运行它以查看错误时,我得到的消息如下:

输入文件名:“C:\Users\Gonzalez-Cocoma\Documents\Python\Programs\mbox-short.txt” 回溯(最近一次呼叫最后一次): 文件“C:\Users\Gonzalez-Cocoma\Documents\Python\Programs\Spamaverage.py”,第2行,在 保险丝=开路(fname)
IOError:[Errno 22]无效模式('r')或文件名:“'C:\Users\Gonzalez Cocoma\Documents\Python\Programs\mbox short.txt”

fname
不是有效文件

从提示符:

>>> import os
>>> fname = 'invalid-filename.txt'
>>> os.path.isfile(fname)
False
如果您尝试打开它,将出现异常:

>>> open(fname)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: 'invalid-filename.txt'
文件名无效的原因是您包含了引号

错误消息显示字符串“path/to/file.txt”。它应该显示“path/to/file.txt”:

IOError: [Errno 22] invalid mode ('r') or filename:
    '"C:\Users\Gonzalez Cocoma\Documents\Python\Programs\mbox-short.txt"'
应该是:

IOError: [Errno 22] invalid mode ('r') or filename:
    'C:\Users\Gonzalez Cocoma\Documents\Python\Programs\mbox-short.txt'

您输入的文件名到底是什么?该文件名是否位于您当前的工作目录中?也许您可以尝试删除try/except块以查看引发了什么错误。不,因为您已决定使用一个catch-all处理程序来吞下异常。任何事情都可能出错,但没有人会知道它是什么,因为你做了一个简单的
except
并且没有报告错误是什么。把
except IOError改为e:print e
。我正在coursera学习并阅读《python for informatics》一书,还没有学到“导入操作系统”是什么意思,请耐心听我说,因为我是一个真正的新手。。。。至于fname,在用户输入文件路径并将其分配给变量fname之后,它是否应该是一个有效的文件名??您给出的文件名是“C:\Users\Gonzalez-Cocoma\Documents\Python\Programs\mbox short.txt”,包括引号。在提示下键入文本时,不需要引号。字符串的表示形式包括引号,用于显示它的开始和结束位置,但它们实际上不是字符串的一部分。我找到了一个在浏览web时所做操作的工作示例,并得出结论,问题在于我的文件或其位置,因为即使使用该工作示例,错误如下:第2行,处于fuse=open(fname)IOError:[Errno 22]无效模式('r')或文件名删除“标记”后,错误更改为:回溯(最近一次调用):文件“C:\Python27\Spamaverage.py”,第6行,在if行.notstartswith('X-DSPAM-Confidence:')):continue AttributeError:'str'对象没有属性'notstartswith',这是您的下一个问题。如果不是line.startswith,则应该是
IOError: [Errno 22] invalid mode ('r') or filename:
    'C:\Users\Gonzalez Cocoma\Documents\Python\Programs\mbox-short.txt'