在python中复制部分文本文件时出错
我有以下代码将文本文件的一部分复制到新的临时文件中。我正在尝试在与正在复制的文件相同的目录中创建临时文件。所有的print语句都是为了查看它在崩溃之前运行了多远,pdb打印在python中复制部分文本文件时出错,python,file-io,text-files,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
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
错误:os.path.dirname()的参数必须是字符串,但您显然正在传入文件对象。(这是有意的吗?) 相反 (旁注:您应该仔细查看得到的回溯。回溯显示错误发生在哪一行–不需要打印语句来隔离错误。在这种情况下,您可以看到调用
os.path.dirname()
失败,因此您应该检查其文档以诊断问题。)尝试在python中使用模块。在原始文件所在的同一目录中创建tempfile是否重要?如果没有,您可以忽略尝试从文件对象获取路径的行,或者按照建议使用:
temp = os.path.dirname(mptfile.name) + '/mpdata.tmp'
无论如何,大多数情况下,您不想自己管理tempfiles,这就是python的tempfile模块存在的原因。如果第4个print语句执行得那么远,它会给您一个缩进错误。我也不清楚您想做什么。为什么要将copyline设置为true?为什么不直接打印行而不使用copyline变量?@RobVolgman:在编译过程中,甚至在代码开始执行之前,就会出现缩进错误。@RobVolgman复制行部分是多余的,我把它取出来了。它就在那里。所有的指纹都只是为了测试,现在它们都消失了,而且还在工作。
temp = os.path.dirname(mptfile.name) + '/mpdata.tmp'