我有以下代码将文本文件的一部分复制到一个新的临时文件中。我试图在与正在复制的文件相同的目录中创建临时文件。所有的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
答案 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模块存在的原因。