在python中复制部分文本文件时出错

时间:2012-07-26 14:17:16

标签: python file-io text-files

我有以下代码将文本文件的一部分复制到一个新的临时文件中。我试图在与正在复制的文件相同的目录中创建临时文件。所有的print语句都是为了看看它在崩溃之前运行了多远,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

2 个答案:

答案 0 :(得分:2)

os.path.dirname()的参数必须是字符串,但您显然是在传入文件对象。 (这是打算吗?)试试

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

代替。

(旁注:你应该仔细查看你得到的回溯。回溯显示错误发生在哪一行 - 不需要print语句来隔离它。在这种情况下,你可以看到它是对{的调用{1}}失败,所以你应该查看其文档以诊断问题。)

答案 1 :(得分:0)

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

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

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