0

我有以下代码将文本文件的一部分复制到新的临时文件中。我正在尝试在与正在复制的文件相同的目录中创建临时文件。所有的打印语句都是为了查看它在崩溃之前运行了多远,pdb 打印1然后给出在代码下方截屏的错误。

def copymp(mptfile):
    print 1
    temp = os.path.dirname(mptfile) + '/mpdata.tmp'
    print 2
    mpfile = open(temp, 'w')
    print 3
    copyline = False
    for line in mptfile:
        print 4
        if line.startswith('MP'):
            copyline = True
            print 5
        if copyline:
            print 6
            print>>mpfile, line
            copyline = False
    mpfile.seek(1)
    return None

错误:http: //i.imgur.com/fqfsi.jpg

4

2 回答 2

2

参数 toos.path.dirname()必须是一个字符串,但您显然是在传递一个文件对象。(这是故意的吗?)试试

temp = os.path.dirname(mptfile.name) + '/mpdata.tmp'

反而。

(旁注:您应该仔细查看您获得的回溯。回溯显示错误发生在哪一行 - 不需要打印语句来隔离它。在这种情况下,您可以看到调用os.path.dirname()失败,所以你应该检查它的文档来诊断问题。)

于 2012-07-26T14:20:43.847 回答
0

尝试在 python 中使用tempfile模块。在原始文件所在的同一目录中创建临时文件是否重要?如果没有,您可以忘记尝试从文件对象获取路径的行,或按照建议使用:

temp = os.path.dirname(mptfile.name) + '/mpdata.tmp'

无论如何,大多数时候您不想自己管理临时文件,这就是 python 的临时文件模块存在的原因。

于 2012-07-26T14:36:29.840 回答